我有一些实现了一个不推荐使用的接口的遗留代码。这个特定组件很快就会被弃用并自行删除,因此重构以解决编译器警告的根本原因是没有意义的。相反,我想抑制它。然而,我不希望抑制的范围是整个类。
代码最初是:
public class Foo
extends
Bar
implements
DeprecatedBaz,
Qux { ... }
DeprecatedBaz是一个被标记为@Deprecated的接口,是第三方框架,这意味着我无法删除@Deprecated。我不想对整个班级发表警告,但不想发表反对意见。基本上我想写:
public class Foo
extends
Bar
implements
@SuppressWarnings("deprecation")
DeprecatedBaz,
Qux { ... }
然而,这是无效的语法并且不会解析。所以接下来我希望我可以在导入时做到这一点,但这篇SO帖子似乎暗示它必须在类级别完成。
或者,我认为可能将其应用于接口规定必须实现的所有方法可能会解决这个问题,但这也不起作用。
因此,我似乎被迫在类级别应用注释:
@SuppressWarnings("deprecation")
public class Foo
extends
Bar
implements
DeprecatedBaz,
Qux { ... }
我不喜欢这样,因为如果有人编辑这个类并引入引用不推荐代码的新代码,警告就会被忽略。
在这种情况下,有没有办法限制范围?
不推荐使用注释的目的是触发警告。
如果不想触发警告,请不要使用注释。
SuppressWarnings注释只能在声明时使用。即使Java 8注释增强功能允许注释出现在其他语法位置,在这种情况下,也不能在需要注释的地方使用SuppressWarnings注释,也就是说,在implements子句中出现不推荐使用的接口时。
您应该避免在类声明中放置SuppressWarnings,因为这将在整个类中抑制可能不相关的警告。
处理此问题的一种可能性是创建一个扩展已弃用接口的中间接口,并抑制其上的警告。然后,将已弃用接口的用途更改为子接口:
@SuppressWarnings("deprecation")
interface SubBaz extends DeprecatedBaz { }
public class Foo ... implements SubBaz ...
这可以避免警告,因为类注释(在本例中为@Deprecated
)不会被继承。
使用< code>Optional,我想根据映射结果返回接口的某个实现(< code>First或< code>Second)。这是< code>First和< code>Second实现的接口: 以下< code>Optional用法是错误的: orElse,可选 既然类<code>First<code>和<code>Second<code>都实现了接口<code>MyInterface<cod
我试图创建一个函数,该函数接受一个底层容器,并基于对元素进行某些处理的自定义迭代器返回boost::iterator\u范围。 例如。 代码可以正常工作(为CustomIterator提供了合适的定义,并使\u custom\u range\u from\u iterators)。 我关心的是使用std::begin声明,我认为这将导致std::begin被导入到声明我的函数的整个命名空间中。我不
问题内容: 在我的应用程序中,我有一些代码来获取中的主机范围。看起来像这样: Xcode一直警告我。但是,我不清楚如何用这些建议替换那些encodingOffsets。有任何想法吗? 问题答案: 一个简单而建立一个正确的方式从是使用它的初始化: 在您的情况下:
问题内容: 我刚刚在应用程序中添加了Hibernate的配置,而IntelliJ Idea抱怨此方言已被弃用: 似乎不是互联网上的明确解决方案,有什么建议吗? 问题答案: 您需要改用。 这在Javadoc中有记录: 不推荐使用。 改用PostgreSQL82Dialect 但是请注意,您应该使用与您使用的PostgreSQL JDBC驱动程序最匹配的方言(在此处列出)。例如,如果您使用的是Post
问题内容: 我有一个React组件,我想在单击时切换一个CSS类。 所以我有这个: 这个问题是ESLint不断告诉我“ this.refs”已贬值。 我该怎么办?我如何解决它而不使用折旧的代码? 问题答案: 您要引用的Lint规则称为 no-string-refs, 并通过以下方式警告您: 之所以收到此警告,是因为已实现了不赞成使用的使用方式(通过使用字符串)。根据您的React版本,您可以执行以
问题内容: 我正在使用apache-httpclient-4.3。我将分析一个HTTP请求,尤其是查询字符串参数,但是 我不确定这意味着什么。我应该使用某些配置API的构造函数参数(那是什么?HostConfiguration作为类不再可用)。但是在构建阶段,我直接通过url传递查询参数: 我找不到不使用不推荐使用的方法从我的 请求 对象读回参数( var1,var2 )的方法,这种方法应该很简单