使用有界通配符推断类型的问题

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" 的含义。以什么方式合适?此代码的预期行为是什么?