小编Mic*_*el1的帖子

Java 泛型 - 原始类型和参数化类型转换

我一直在阅读 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 …

java generics raw-types

5
推荐指数
1
解决办法
819
查看次数

标签 统计

generics ×1

java ×1

raw-types ×1