我正在扩展打包库中的一个类,而我正在扩展的类会导致“未经检查”的编译器警告。请注意,引起警告的不是我的班级,这就是为什么这与我在其他地方找到的其他问题不同的原因。为了符合我公司的代码标准,我的代码必须在没有警告的情况下编译,但我无法摆脱这个。最初,我什至没有覆盖有问题的方法。我重写它只是为了添加@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>)有没有办法真正抑制警告,即使我不能重新编译有问题的类而只能重新编译它的后代?
1 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
我设法重现了。@SuppressWarnings无论出于何种原因,在课堂上似乎都有效。
@SuppressWarnings("unchecked")
public class ClassC extends ClassB
{
protected Object methodA(String lockName, TransactionCallback txCallback) {
return super.methodA(lockName, txCallback);
}
}
添加回答
举报
0/150
提交
取消