【发布时间】:2016-03-23 01:40:57
【问题描述】:
给定以下代码:
public class ClassCastTest {
private static class GenericHolder<T> {
private T object;
public GenericHolder(Object object) {
this.object = (T) object;
System.out.println(getObject());
}
public T getObject() {
return object;
}
}
public static void main(String[] args) {
GenericHolder<String> foo = new GenericHolder<>(3l);
System.out.println(foo.getObject());
}
}
为什么 Java 在 main-method 的第二行而不是 GenericHolder 的第二行抛出 ClassCastException?
【问题讨论】:
-
为什么还要选演员?如果这是您所期望的,为什么不简单地将 T 传递给构造函数呢?
public GenericHolder(T object) { this.object = object; } -
这只是一个例子;)我不需要那个代码