使用有界通配符推断类型的问题
Problems with inferring types with bounded wildcards
在下面的代码片段中设置 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;
}
}
}
因为您只能使用 temp2
合法使用 TheBox
的事情, 任何 可能的子类 Number
参数化].其中包括尚未编写的 Number
的子类。 Integer
只能分配给 Number
的 一些 个子类,但不能分配给全部。
给予 temp2.set
的唯一合法论据是 null
。那是因为 null
可以分配给任何东西。
请阐明 "whats the proper way of setting temp2.in" 的含义。以什么方式合适?此代码的预期行为是什么?
在下面的代码片段中设置 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;
}
}
}
因为您只能使用 temp2
合法使用 TheBox
的事情, 任何 可能的子类 Number
参数化].其中包括尚未编写的 Number
的子类。 Integer
只能分配给 Number
的 一些 个子类,但不能分配给全部。
给予 temp2.set
的唯一合法论据是 null
。那是因为 null
可以分配给任何东西。
请阐明 "whats the proper way of setting temp2.in" 的含义。以什么方式合适?此代码的预期行为是什么?