黑马程序员技术交流社区
标题:
泛型的一点小疑问
[打印本页]
作者:
Jaybor
时间:
2015-3-2 17:42
标题:
泛型的一点小疑问
我自定义了Pair、Manager类,然后发现下面的代码居然可以运行:
class Pair<T>
{
private T first;
private T second;
public Pair(T first, T second)
{
this.first=first;
this.second=second;
}
public T getFirst()
{
return first;
}
public T getSecond()
{
return second;
}
public void setSecond(T second)
{
this.second=second;
}
public void setFirst(T first)
{
this.first=first;
}
public static void main(String[] args)
{
Manager ceo=new Manager("zhangsan");
Manager cfo=new Manager("lisi");
Pair<Manager> manager=new Pair<Manager>(ceo,cfo);
Pair pr=manager;
pr.setFirst("错误实例");
}
}
复制代码
这样操作会使得Pair<Manager>的实例里包含一个非Manager的实例,但是运行是没问题的?
作者:
sofeel
时间:
2015-3-3 18:55
好家伙,一个类用尽了泛型的所有。
Pair pr=manager;
这一句其实就是多态的运用,你觉得呢
作者:
Jaybor
时间:
2015-4-1 16:38
sofeel 发表于 2015-3-3 18:55
好家伙,一个类用尽了泛型的所有。
Pair pr=manager;
利用这个原理可以在一个ArrayList<Integer>实例list里添加一个String对象,搞破坏用的哈哈~
作者:
Aelous_6
时间:
2015-4-5 13:08
没这样试过,真的能行啊!
作者:
sisel
时间:
2015-4-11 22:31
这恰恰证明了java的泛型只存在于编译时期,而不是.NET的真运行时强类型泛型
作者:
18612539120
时间:
2015-5-21 18:39
大 牛 。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2