在Java中,如果导入不赞成使用的类:
import SomeDeprecatedClass;
您将收到以下警告:The type SomeDeprecatedClass is deprecated是否有办法抑制此警告?
The type SomeDeprecatedClass is deprecated
vs3odd8k1#
若要避免警告:* 不 * 导入该类
改为使用完全限定类名
并在尽可能少的地方使用它。
djp7away2#
在类或方法上使用以下注解:
@SuppressWarnings("deprecation")
从Java 9开始,您可能需要添加:
@SuppressWarnings("removal")
如果类的注解类似于:
@Deprecated(since = "3.14", forRemoval = true)
ffx8fchx3#
作为一个黑客,你不能做导入和使用代码内的完全限定名。您也可以尝试javac -Xlint:-deprecation,但不确定是否可以解决这个问题。
umuewwlo4#
我通过将导入更改为以下内容解决了此问题:
import package.*
然后用@SuppressWarnings("deprecation")注解使用过时类的方法
jjhzyzn05#
假设你用一个过时的方法(比如java.sql.ResultSet中的getUnicodeStream(String columnLabel))来覆盖/实现一个接口,那么你不会仅仅通过使用@SuppressWarnings( "deprecation" )注解来消除过时警告,除非你也用@Deprecated注解了同一个新方法。这是合乎逻辑的,因为否则你可以通过覆盖一个方法的接口描述来 * unprecate * 它。
java.sql.ResultSet
getUnicodeStream(String columnLabel)
@SuppressWarnings( "deprecation" )
@Deprecated
dtcbnfnu6#
您可以用途:
someListItem.addItem("red color")
someListItem.add("red color");
1dkrff037#
如果@SuppressWarnings("deprecation")不适合你,就像我一样。你可以在声纳lint插件中找到确切的乌贼数量。然后你可以简单地抑制警告:@SuppressWarnings("squid:CallToDeprecatedMethod")个
@SuppressWarnings("squid:CallToDeprecatedMethod")
7条答案
按热度按时间vs3odd8k1#
若要避免警告:* 不 * 导入该类
改为使用完全限定类名
并在尽可能少的地方使用它。
djp7away2#
在类或方法上使用以下注解:
从Java 9开始,您可能需要添加:
如果类的注解类似于:
ffx8fchx3#
作为一个黑客,你不能做导入和使用代码内的完全限定名。
您也可以尝试javac -Xlint:-deprecation,但不确定是否可以解决这个问题。
umuewwlo4#
我通过将导入更改为以下内容解决了此问题:
然后用
@SuppressWarnings("deprecation")
注解使用过时类的方法jjhzyzn05#
假设你用一个过时的方法(比如
java.sql.ResultSet
中的getUnicodeStream(String columnLabel)
)来覆盖/实现一个接口,那么你不会仅仅通过使用@SuppressWarnings( "deprecation" )
注解来消除过时警告,除非你也用@Deprecated
注解了同一个新方法。这是合乎逻辑的,因为否则你可以通过覆盖一个方法的接口描述来 * unprecate * 它。dtcbnfnu6#
您可以用途:
但是这样会给予你警告,并且告诉你代码中导致不推荐使用的部分或者使用了不推荐使用的API。现在你可以运行代码时显示这些警告,或者对代码进行适当的修改。
在我的例子中,我使用的是
someListItem.addItem("red color")
,而编译器希望我使用someListItem.add("red color");
。1dkrff037#
如果
@SuppressWarnings("deprecation")
不适合你,就像我一样。你可以在声纳lint插件中找到确切的乌贼数量。然后你可以简单地抑制警告:@SuppressWarnings("squid:CallToDeprecatedMethod")
个