public class Demo {
public static void main(String[] args) {
Test<Dog> t1 = new Test<>(); //在这里我已经将t1中的a指定为Dog类型
//执行fun1修改其中的a类型为Cat类型,这里Dog和Cat没有继承关系不应该发生类型转换异常吗?
t1.fun1(t1); //正常运行,没有报任何错误。
System.out.println(t1.a); //输出为Cat
}
}
@SuppressWarnings("all")
class Test<E> {
E a;
<T extends Test> void fun1(T t) {
t.a = new Cat();
}
}
class Dog { }
class Cat { }
泛型类中可以任意修改已经指定后的类型吗?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- Tomshidi 2021-11-09 22:12关注
泛型在编译后都是用Object替代,所以你传啥都不会报错。
但是如果你Dog里有一个run
方法,Cat里有一个walk
方法,你的func1
方法里如果想要用Dog的run
或者Cat的walk
,就需要先使用instance of
判断a的实际类型了。解决 1无用
悬赏问题
- ¥15 微生物组数据分析--微生物代谢物
- ¥30 求一跃动小子保卫主公Java算法实现
- ¥15 地图软件开发技术答疑(api, 地点获取,外观样式)
- ¥20 物理远程控制麦克风使用问题
- ¥15 打印预览会泄漏纸钱包密码吗
- ¥15 在hololens1上运行unity项目只有空窗口
- ¥25 TABLEAU PREP无法打开
- ¥15 百度帐号问题/centos
- ¥15 关于#c语言#的问题:求完整代码条件好说
- ¥100 HALCON DELPHI