为什么当返回值是访问一个ClassCastException只抛出?
-
13-09-2019 - |
解决方案
在Java中5/6泛型是型擦除的,这意味着任何通用类型是从根本上只是一个Object
型(或任何最小公分母类型是,这是在这种情况下CharSequence
)在运行时。适当的强制类型转换插入任何需要的地方。所以,你的方法获取类型擦除的东西,看起来像这样:
public static CharSequence foo(CharSequence s) {
return (CharSequence) new StringBuilder(s);
}
和您的电话获得类型擦除这样:
System.out.println((String)foo("hello"));
显然Java将不会打扰插入(String)
投如果返回值是从来没有使用过,何必呢?
其他提示
通用类型只适用于编译器,并在运行时被erasured(基本上略)。所以铸造在方法中忽略
不隶属于 StackOverflow