禁止显示由打包库中的父类引起的 Java 编译器警告



我正在扩展打包库中的类,我正在扩展的类导致"未选中"编译器警告。请注意,导致警告的不是我的类,这就是为什么这与我在SO中找到的其他问题不同。

为了符合我公司的代码标准,我的代码必须在没有警告的情况下编译,但我无法摆脱这个。

最初,我甚至没有覆盖冒犯的方法。我覆盖它只是为了添加@SuppressWarnings("未选中")注释,但这并没有解决问题。

在库中,抽象类 ClassA 具有以下方法:

public abstract class ClassA {
protected abstract <T> T methodA(
String lockName, 
TransactionCallback<T> txCallback);
}

同样在库中,另一个类 B 扩展了导致警告的类 A:

public class ClassB extends ClassA {
@Override
protected Object methodA(
String lockName, 
TransactionCallback txCallback) {
return someOtherMethod(lockName, txCallback, null);
}
}

这使用未经检查的操作,因此,当我尝试编译我的类时:

public class ClassC extends ClassB {
@SuppressWarnings("unchecked")
@Override
protected Object methodA(String lockName, @SuppressWarnings("rawtypes") TransactionCallback txCallback) {
return super.methodA(lockName, txCallback);
}
}

我收到此警告:

[javac]   protected Object methodA(String lockName, @SuppressWarnings("rawtypes") TransactionCallback txCallback)
[javac]                    ^
[javac]   return type requires unchecked conversion from Object to T
[javac]   where T is a type-variable:
[javac]     T extends Object declared in method <T>methodA(String,TransactionCallback<T>)

有没有办法实际抑制警告,即使我无法重新编译有问题的类,而只能重新编译它的后代?

我设法重现了。 无论出于何种原因,班级层面的@SuppressWarnings似乎都有效。

@SuppressWarnings("unchecked")
public class ClassC extends ClassB
{
protected Object methodA(String lockName, TransactionCallback txCallback) {
return super.methodA(lockName, txCallback);
}
}

相关内容

  • 没有找到相关文章

最新更新