现在刚接触了解泛型,对泛型感到十分模糊:
1.对于指定了泛型的类,类中的函数可否出现读取或返回其它类的函数,因为所有书都太注重泛型的T而没能与其他类比较;
2.我确定了一个泛型类,把其他类的对象传给该类无报错,返回时候才报错,这又是为何,求解public class Holder3 <T>{
private T a;
public Holder3(T a){
this.a = a;
System.out.println(a);
}
public void set(T a){
this.a = a;
}
public T get(){
return a;
}
public static void main(String[] args){
Holder3<Tetris> h3 = new Holder3(new hello());//该行无报错
// Tetris a = h3.get();//抛出异常
}
}
1.对于指定了泛型的类,类中的函数可否出现读取或返回其它类的函数,因为所有书都太注重泛型的T而没能与其他类比较;
2.我确定了一个泛型类,把其他类的对象传给该类无报错,返回时候才报错,这又是为何,求解public class Holder3 <T>{
private T a;
public Holder3(T a){
this.a = a;
System.out.println(a);
}
public void set(T a){
this.a = a;
}
public T get(){
return a;
}
public static void main(String[] args){
Holder3<Tetris> h3 = new Holder3(new hello());//该行无报错
// Tetris a = h3.get();//抛出异常
}
}
Holder3<Tetris> h3 = new Holder3(new hello());//该行无报错
// Tetris a = h3.get();//抛出异常
试试这样?Holder3<Tetris> h3 = new Holder3<Tetris>(new Tetris());//该行无报错
// Tetris a = h3.get();//抛出异常
你的写法是:Holder3<Tetris> h3 = new Holder3(new hello());//该行无报错
但编译器应该会警告你没有经过类型检查。
如果你写成
Holder3<Tetris> h3 = new Holder3<Tetris>(new hello());
指定了类型,就报错了然后get的时候 类型不匹配。自然报错。Java7 可以写成
Holder3<Tetris> h3 = new Holder3<>(new Tetris());