抑制由打包库中的父类引起的java编译器警告

我正在扩展打包库中的一个类,而我正在扩展的类会导致“未经检查”的编译器警告。请注意,引起警告的不是我的班级,这就是为什么这与我在其他地方找到的其他问题不同的原因。


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


最初,我什至没有覆盖有问题的方法。我重写它只是为了添加@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>)

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


慕婉清6462132
浏览 120回答 1
1回答

海绵宝宝撒

我设法重现了。@SuppressWarnings无论出于何种原因,在课堂上似乎都有效。@SuppressWarnings("unchecked")public class ClassC extends ClassB{&nbsp; &nbsp; protected Object methodA(String lockName, TransactionCallback txCallback) {&nbsp; &nbsp; &nbsp; &nbsp; return super.methodA(lockName, txCallback);&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java