抑制由打包库中的父 class 引起的 java 编译器警告
Suppress java compiler warnings caused by parent class in packaged library
我正在扩展打包库中的 class,而我正在扩展的 class 导致 "unchecked" 编译器警告。请注意,不是我的 class 引起了警告,这就是为什么这与我在 SO 中发现的其他问题不同的原因。
为了符合我公司的代码标准,我的代码必须在没有警告的情况下编译,但我无法摆脱这个。
最初,我什至没有覆盖有问题的方法。我重写它只是为了添加 @SuppressWarnings("unchecked") 注释,但这并没有解决问题。
在库中,一个抽象 class ClassA 有这个方法:
public abstract class ClassA {
protected abstract <T> T methodA(
String lockName,
TransactionCallback<T> txCallback);
}
同样在库中,另一个 class ClassB 扩展了 ClassA 导致警告:
public class ClassB extends ClassA {
@Override
protected Object methodA(
String lockName,
TransactionCallback txCallback) {
return someOtherMethod(lockName, txCallback, null);
}
}
这使用了未经检查的操作,因此,当我尝试编译我的 class:
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>)
有没有办法真正抑制警告,即使我不能重新编译有问题的 class 而只能重新编译它的后代?
我成功重现了。 @SuppressWarnings
在 class 级别似乎有效,无论出于何种原因。
@SuppressWarnings("unchecked")
public class ClassC extends ClassB
{
protected Object methodA(String lockName, TransactionCallback txCallback) {
return super.methodA(lockName, txCallback);
}
}
我正在扩展打包库中的 class,而我正在扩展的 class 导致 "unchecked" 编译器警告。请注意,不是我的 class 引起了警告,这就是为什么这与我在 SO 中发现的其他问题不同的原因。
为了符合我公司的代码标准,我的代码必须在没有警告的情况下编译,但我无法摆脱这个。
最初,我什至没有覆盖有问题的方法。我重写它只是为了添加 @SuppressWarnings("unchecked") 注释,但这并没有解决问题。
在库中,一个抽象 class ClassA 有这个方法:
public abstract class ClassA {
protected abstract <T> T methodA(
String lockName,
TransactionCallback<T> txCallback);
}
同样在库中,另一个 class ClassB 扩展了 ClassA 导致警告:
public class ClassB extends ClassA {
@Override
protected Object methodA(
String lockName,
TransactionCallback txCallback) {
return someOtherMethod(lockName, txCallback, null);
}
}
这使用了未经检查的操作,因此,当我尝试编译我的 class:
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>)
有没有办法真正抑制警告,即使我不能重新编译有问题的 class 而只能重新编译它的后代?
我成功重现了。 @SuppressWarnings
在 class 级别似乎有效,无论出于何种原因。
@SuppressWarnings("unchecked")
public class ClassC extends ClassB
{
protected Object methodA(String lockName, TransactionCallback txCallback) {
return super.methodA(lockName, txCallback);
}
}