在下面的代码段中设置temp2.in
的正确方法是什么?为什么代码不能编译?
public class WildCards {
public static void main(String[] args) {
TheBox<Integer> temp1 = new TheBox<Integer>();
temp1.set(10);
TheBox<? extends Number> temp2 = temp1;
temp2.set(1);
}
public static class TheBox<T> {
T in;
public T get() {
return in;
}
public void set(T in) {
this.in = in;
}
}
}
答案 0 :(得分:1)
因为您只允许使用temp2
与TheBox
参与<{>>任何可能的Number
子类合法的事情。这包括尚未编写的Number
的子类。 Integer
只能分配给 Number
的某些子类,但不是全部。temp2.set
。
授予null
的唯一合法理由是null
。那是因为startActivityForResult()
可以分配给任何东西。
请通过“设置temp2.in的正确方法”来澄清你的意思。适当的方式?这段代码的期望行为是什么?