我在打包库中扩展一个类,而我要扩展的类会导致一个“未检查”编译器警告。请注意,引起警告的不是我的班级,这就是为什么这与我在这里发现的其他问题不同的原因。
为了符合我公司的代码标准,我的代码必须在没有警告的情况下编译,但我无法摆脱这个错误。
一开始,我甚至没有凌驾于冒犯的方法之上。我重写它只是为了添加@SuppressWarnings("unchecked")注释,但这并没有解决问题。
在库中,抽象类ClassA具有以下方法:
public abstract class ClassA {
protected abstract <T> T methodA(
String lockName,
TransactionCallback<T> txCallback);
}在库中,另一个类ClassB扩展了引起警告的ClassA:
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>)即使我不能重新编译这个违规的类,但是只能编译它的后代,但是否有一种方法来真正地抑制警告呢?
发布于 2019-08-13 10:35:11
我成功地复制了。无论出于什么原因,班级级别的@SuppressWarnings似乎都很有效。
@SuppressWarnings("unchecked")
public class ClassC extends ClassB
{
protected Object methodA(String lockName, TransactionCallback txCallback) {
return super.methodA(lockName, txCallback);
}
}https://stackoverflow.com/questions/57475498
复制相似问题