java抽象泛型方法中的警告

时间:2013-12-12 08:49:11

标签: java generics warnings

我有类似的东西:

public abstract class Base{
    public abstact T <T> method();
}

public class ExtendingClass extends Base{
    public SomeObject method(){
    }
}

但是,ExtendingClass#method有警告类型安全:从ExtendingClass类型的方法的返回类型SomeObject需要未经检查的转换以符合 来自Base类型的

您能告诉我为什么会这样,以及如何处理?

2 个答案:

答案 0 :(得分:3)

你可以使用:

public abstract class Base<T> {
    public abstract T method();
}

public class ExtendingClass extends Base<SomeObject >{

    public SomeObject method(){
        ...
    }

}

这是因为除了抽象方法声明之外,通用参数不会出现在其他地方。

此方法签名几乎等同于public abstract Object method()

来自java generic methods tutorial

  

通用方法允许使用类型参数来表达   方法的一个或多个参数的类型之间的依赖关系   和/或其返回类型。如果没有这样的依赖,那就是泛型   方法不应该使用。

答案 1 :(得分:1)

abstract class Base <T> {
    public abstract T method();
}



public class test extends Base<String>{

    @Override
    public String method(){
        return null;

    }
}

在编写具体示例时,必须为其传递适当的值,以便编译器可以在编译期间验证该值