Aru*_*run 0 java generics generic-method
泛型方法返回类型是否基于值引用解析?例如
public class TestGenericMethod
{
public static void main(String[] args)
{
TestGenericMethod dis = new TestGenericMethod();
String str = dis.getFirst(singletonList("String"));
System.out.println("| String ==> " + str);
Integer in = dis.getFirst(singletonList(5));
System.out.println("| Integer ==> " + in);
}
private <T> T getFirst(List<Object> objs)
{
return (T) objs.get(0);
}
}
Run Code Online (Sandbox Code Playgroud)
参考代码片段,此代码编译并正常运行.我的问题在这里,因为我不是特定的类型转换列表对象到我的类型,仍然返回类型兼容String和Integer.那么返回类型是在值参考的基础上解决的吗?
返回类型由编译器根据您将结果赋给(str,in)的变量类型推断出来.
当然,返回值的实际类型将是列表的第一个对象的类型,并且您可以在运行时获得ClassCastException,因为您的代码不是类型安全的并且您忽略了通用转换是未选中的.试试这个例子
Integer oops = dis.getFirst(singletonList("hello"));
Run Code Online (Sandbox Code Playgroud)