泛型类
代码实例:
public class Teacher<T> {
private T t;
public Teacher(T t){
this.t = t;
}
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
在上面,我们定义了泛型类,接下来创建泛型类,从中说明我对泛型的惊讶。
首先有这样的一个代码实例,当然,也是我在创建Teacher类的时候,产生的疑惑。
Teacher<Integer> teacher = new Teacher("s");
Integer i = teacher.setT("s");
不知道看到这段代码的人能不能直接给出一个答案了?也就是这段代码会不会出现编译期错误,如果会,那么哪一行出现编译器错误。
可能看到我文章的毕竟在少数,但我希望各位可以给出我一个答案,当然,如果可以说明原因,那就更好不过了。
public class Pair<T> {
private T t;
public Pair(T t) {
this.t = t;
}
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
public void print(Pair<? extends Teacher> pairx){
Teacher teacher = pairx.getT();
System.out.println(teacher.getT());
}
public static void main(String[] args) {
Pair pair = new Pair(1);
Teacher teacher = new Teacher(1);
TeacherToStudent teacherToStudent = new TeacherToStudent(1);
pair.print(new Pair<>(teacher));
pair.print(new Pair<>("w"));
}
}
对于上述代码,同样有一个疑惑,就其print方法而已,其参数为Pair<? extends Teacher>,但是在编写main方法时,
对于pair.print(new Pair<>("w"))方法的调用并不会报错,仅仅在运行期出现类转换异常,那Pair<? extends Teacher>的限定到底是限定了什么??好疑惑。