Discuss / Java / 为什么不能new T()?

为什么不能new T()?

Topic source

Mike啊徐

#1 Created at ... [Delete] [Delete and Lock User]
public class Pair<T> {
    private T first;
    private T last;
    public Pair() {
        // Compile error:
        first = new T();
        last = new T();
    }
}

如果用擦除法解释的话,上边代码会变成,并不会报错吧??

public class Pair<Object> {
    private Object first;
    private Object last;
    public Pair() {
        // Compile error:
        first = new Object();
        last = new Object();
    }
}

拆开宇宙

#2 Created at ... [Delete] [Delete and Lock User]

new T()是String还是Integer,不能将Object同时new为String和Integer,编译器会阻止你。

暴恒磊

#3 Created at ... [Delete] [Delete and Lock User]

对下面的代码,擦拭法就无法处理。

public class Pair<T extends String> {
    private T first;
    private T last;
    private int len;
    public Pair() {
        // Compile error:
        first = new T();
        last = new T();
        len = first.length();
    }
}

  • 1

Reply