Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免Java中匿名内部类的@SuppressWarning?_Java_Android - Fatal编程技术网

如何避免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;
}