如何避免使用Java中的匿名内部类的@SuppressWarnings?

时间:2012-07-23 11:20:27

标签: java android

在使用匿名类时,我正在努力使用更智能的编码风格。

如何使用匿名内部类WITHOUT     @SuppressWarnings 在下面的情况下?

以这种方式使用匿名类时:

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”需要注释     @SuppressWarnings( “未使用”)

如果我另外编码echo2,echo3,echo4,......所有方法都需要逐个注释。

为了避免经常编写注释, 我尝试用这种方式编码,以便在所有子类上传播注释效果:

@Inherited // <- This is what I want this annotation to be!
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface SuppressWarningsPropagate extends SuppressWarnings
{
}

然后我尝试用这个注释注释类Y. 这对于仅注释一个基类来说非常有用且简单。

......我发现自己很蠢。

注释之类的     SuppressWarnings 不能“扩展”或“实施”。

相反,这段代码有效并且没有警告,因为SuppressWarnings适用于这个只有一个具体类:

@SuppressWarnings("unused")
public class X
{
    private int i;
    private int j;
}

总之,我怎么能......

  • 使用匿名内部类(为了提高代码的可读性)
  • 并且还定义了公共方法 新 (必须是公开的,关于Android SDK的addJavascriptInterface())
  • 并且还避免逐个为所有方法编写@SuppressWarnings(“unused”)(为了良好的可写性)

...可能?还是我只是在做白日梦?

提前多多感谢。

0 个答案:

没有答案