Java泛型函数
我很想知道这是否像我想的那样有效。我确实意识到泛型只是在运行时作为对象结束。这只是我在Eclipse中遇到的一个问题。我在研究Java如何解决集合中泛型的强制转换问题时发现了这个构造。emptyList()。当我从我正在使用的任何界面中抛出一个列表时,我已经厌倦了抑制警告
<T> List<T> emptyList()
在我看来,这就像是在阅读一般演员的任务。例如,这些作品中的任何一个都不会抛出任何类型的铸造错误
List<Object> list = Collections.emptyList();
List<MyObect> list2 = Collections.emptyList();
有人能给我指一下这是如何工作的文档吗。我甚至不知道该叫什么来搜索它
# 1 楼答案
它是从指定给它的变量的声明中推断
emptyList
的类型。如果您希望自己指定,可以使用例如,在方法
Arrays.asList
中,这可能很有用。该方法允许您编写如下代码:但是如果你有一个
String[]
,asList
会给你一个List<String[]>
而不是一个List<String>
。您可以按如下方式覆盖此选项:更多关于泛型方法here中的类型推断
# 2 楼答案
Java "Type Inference" documentation应该回答与此相关的大多数问题
你可以改变
到
为了明确说明
<T>
应该绑定到<MyObject>
,但是对于变量初始值设定项,它应该自动推断# 3 楼答案
不确定你到底在问什么。如果您想执行强制转换而不让编译器发出警告,我们可以欺骗编译器来执行
当然,你必须谨慎地使用它,确保每个对
bruteCast()
的调用都是正确的