swi*_*Man 12 java generics parameterized-types
在下面的代码中,编译器如何处理对"T"的引用,因为该方法不采用允许推断T的参数?是否可以将任何类型的对象放入列表中进行限制?是否在我将String添加到列表的行中进行了转换?我的第一个想法是没有任何东西来推断T,T成为一个对象类型.提前致谢.
public class App {
private <T> void parameterizedMethod()
{
List<T> list = new ArrayList<>();
for(int i = 0; i < 10; i++)
{
list.add((T)new String()); //is a cast actually occurring here?
}
}
public App()
{
parameterizedMethod();
}
public static void main(String[] args) {
new App();
}
}
Run Code Online (Sandbox Code Playgroud)
List<T> list = new ArrayList<>();
for(int i = 0; i < 10; i++)
{
list.add((T)new String()); //is a cast actually occurring here?
}
Run Code Online (Sandbox Code Playgroud)
不,那里实际上没有演员阵容。如果您对它做了任何list强制它成为 a 的操作List<T>(例如返回它),那么可能会导致ClassCastException编译器在插入实际强制转换的位置出现 s 。