如何避免Java中匿名内部类的@SuppressWarning?
在使用匿名类时,我正在努力使用更智能的编码风格 如何使用匿名内部类而不使用 @抑制警告 在下面的例子中 以这种方式使用匿名类时:如何避免Java中匿名内部类的@SuppressWarning?,java,android,Java,Android,在使用匿名类时,我正在努力使用更智能的编码风格 如何使用匿名内部类而不使用 @抑制警告 在下面的例子中 以这种方式使用匿名类时: someMethod( new Y(){ // non-overriding public method public void echo1(){ // do some stuff } } ); ... public abstract class Y { // use me as an anonymous cla
someMethod( new Y(){
// non-overriding public method
public void echo1(){
// do some stuff
}
} );
...
public abstract class Y
{
// use me as an anonymous class,
// and define any methods when defining me
}
此代码发出警告
公共方法“echo1”需要注释
@抑制警告(“未使用”)
如果我另外编码echo2,echo3,echo4,。。。所有方法都需要逐个注释
为了避免频繁编写注释,
我尝试以这种方式编写代码,以便在所有子类上传播注释效果:
@Inherited // <- This is what I want this annotation to be!
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface SuppressWarningsPropagate extends SuppressWarnings
{
}
总之,我怎样才能
- 使用匿名内部类(为了代码的可读性好)
- 以及定义公共方法 刚出现的 (对于Android SDK的addJavascriptInterface(),必须是公共的)
- 同时也要避免为所有方法逐个写入@SuppressWarnings(“未使用”)(以获得良好的可写性)
事先非常感谢。警告实际上是告诉您没有人在使用您的
echo1()
方法,因此您最好删除它并获得相同的结果。你想完成什么?嗨@Flavio,谢谢你的评论!我完全同意你所说的。还有,我还有其他解释。。。请听,因为它可能很有趣。我将把细节分为三部分:(1)目的,(2)问题,(3)问题。每个注释都应该简短。**(1)目的**我试图实现的是,在JavaScript(一种动态语言)之间连接Java(一种静态语言)。在开发Android应用程序时,这确实经常发生。我们现在可以从HTML&JS调用JAVA方法。---参见“通过AndroidWebView从javascript调用java函数”:我写的解释(对不起,自动翻译),但这些可从JS调用的java方法应该是公开的。这只是Android API的一个规范。然后,我的情况发生了。(继续下一条评论)**(2)问题**在Java、Eclipse和静态类型程序的世界中,他们永远不知道公共Java方法“echo1”会在某个地方被调用。实际上,在Java世界中从来没有调用过这些方法。因为它们是为了在JavaScript世界中使用而编码的,Eclipse永远不会知道。所以,Eclipse的警告是正确的,善意地告诉我们“Java世界中没有使用这些方法”。没关系…**(3)问题**于是我的问题出现了。在这种情况下,我可以轻松地删除或抑制此类Eclipse的警告消息吗?方法,如果我想添加一个java公共方法用于JS,我必须编写@SuppressWarnings(“unused”)注释。我希望降低这一成本,实现更简单、更少的编码风格。如果我可以“扩展”要继承的注释,我只会写一次。但我不能扩展Java的标准注释,也不能将SuppressWarnings调整为继承。
@SuppressWarnings("unused")
public class X
{
private int i;
private int j;
}