面试题答案
一键面试接口定义
public interface GenericInterface<T> {
void process(T t);
}
实现类示例
public class StringProcessor implements GenericInterface<String> {
@Override
public void process(String t) {
System.out.println("Processing string: " + t);
}
}
确保类型安全
- 编译期检查:Java的泛型是在编译期进行类型检查的。当定义实现类
StringProcessor
实现GenericInterface<String>
时,编译器会确保所有调用process
方法传入的参数都是String
类型,如果传入其他类型,编译器会报错。 - 擦除机制:Java的泛型采用类型擦除机制,在运行时泛型类型信息会被擦除。但是通过编译期的严格类型检查,已经可以保证在程序运行前类型的正确性,避免了在运行时因为类型不匹配而产生的
ClassCastException
等错误。 例如,如果在main
方法中有如下代码:
public class Main {
public static void main(String[] args) {
GenericInterface<String> processor = new StringProcessor();
processor.process("Hello"); // 正确,传入String类型
// processor.process(123); // 错误,编译器会报错,因为123不是String类型
}
}
通过这种方式,Java泛型有效地确保了类型安全。