我正在扩展一个我无法改变的库中定义的类:
public class Parent { public void init(Map properties) { ... } }
如果我正在定义一个扩展Parent的类'Child'而我正在使用带有泛型的Java 6,那么在不获取未经检查的警告的情况下覆盖init方法的最佳方法是什么?
public class Child extends Parent { // warning: Map is a raw type. References to generic type Mapshould be parameterized public void init(Map properties) { } }
如果我添加通用参数,我得到:
// error: The method init(Map
无论我使用特定类型,有界通配符还是无界通配符,都会发生此错误.是否有正确或惯用的方法来覆盖非通用方法而没有警告,并且没有使用@SuppressWarnings("unchecked")?
是的,您必须使用与父类相同的签名声明覆盖方法,而不添加任何泛型信息.
我认为你最好的办法是将@SuppressWarnings("unchecked")
注释添加到raw-type参数而不是方法中,这样你就不会压制自己代码中可能有的其他泛型警告.