我一直在阅读 Java 泛型教程和 Stackoverflow 中处理泛型的一些线程,但仍然无法理解特定的情况。这里是:
public class Box<T>
{
private T t;
public T getT ()
{
return t;
}
public void setT (T t)
{
this.t = t;
}
public static void main (String[] args)
{
Box<Integer> intBox = new Box<Integer>();
Box rawBox = intBox;
rawBox.setT("NBA");
System.out.println(rawBox.getT());
System.out.println(intBox.getT());
/*1*/ //System.out.println(intBox.getT().toString());
}
}
Run Code Online (Sandbox Code Playgroud)
这是交易,我理解的第一个打印,也就是说,
System.out.println(rawBox.getT());
Run Code Online (Sandbox Code Playgroud)
打印 NBA,因为 rawBox 是 Box T 的原始类型,它“给出”我们对象。
我没有得到的是第二次打印:
System.out.println(intBox.getT());
Run Code Online (Sandbox Code Playgroud)
打印 NBA. intBox 是一个泛型类型(在本例中为 Box of Integers),这意味着它的 getter 方法应该返回类型 T 的值(在本例中为 Integer),所以我的理解是保存在那里的 String 对象应该被转换到 Integer(因为这是赋予 Box …