作者pankk (KK)
看板java
标题[问题] 有关generics泛型的函式参数super用法
时间Thu Mar 3 18:50:59 2011
小弟最近在学java观念上遇到了些难题,
想请教各位一个问题:
在泛型函式中为了要使class Write里的setName(T)可以不为read-only,
class test里的WriteName函式把它参数形式改为(Write<? super String>),
使得在写入name时可以编译通过,
但是我想不懂的是我又加了一行setName(new Object())它就编不过,
我在想我逻辑是不是又乱了,好不容易稍微看懂为啥要用super取代extends了,
没想到又卡住了...Orz,我是不是观念认知出了些差错?
//=========================================
class Write<T> {
private T name;
public Write(T value) {
name = value;
}
public void setName(T a_name) {
name = a_name;
}
public T getName() {
return name;
}
}
public class test {
public static void main(String[] args) {
test t= new test();
t.WriteName(new Write("Ha"));
t.WriteName(new Write(new Object()));
}
public void WriteName(Write<? super String> value) {
//value.setName(new Object()); //compile error
value.setName("Test2");
System.out.println(value.getName());
}
}
//=========================================
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 112.104.76.226
1F:→ pico2k:在泛型中,object不是所有型别的super type... 03/03 20:01
2F:→ pankk:非常感谢~我会再去了解 03/03 20:53
3F:→ pankk:请问你说的在泛型中,object不是all types的super type 03/03 21:05
4F:→ pankk:连结中我看不太出来哪里是object不是所有型别的super type.. 03/03 21:09
5F:→ pico2k:我说错了...XD 03/03 23:41