2011-05-16 95 views

回答

6

保留声明(方法,字段,类,参数)具有具体类型部分的泛型。

所以你可以从这个声明

public List<String> toString(List<Foo> foos) { .. } 

获得的类型,但你从这个代码不能:

public List<E> transform(List<E> list) { 
    // E is not accessible at runtime 
} 
+0

怪异的......所以如果我在做运行时方法调度(http://stackoverflow.com/questions/6021109/java-runtime-method-resolution)那么我也必须担心这方面? – 2011-05-16 17:51:31

+0

(在第二个例子中,你不需要'List '之前的'') – 2011-05-16 17:52:12

+0

我假定E是类声明的一部分,但它也可能在方法中。 – Bozho 2011-05-16 17:58:34

1

泛型可以通过擦除工作,但代码使用编译后的类仍需要正确使用泛型。编译器还有其他信息,您可以获取该信息,但这不会改变其运行时行为。