用于实施静态变量或静态方法的Java注释?

时间:2012-04-11 21:30:39

标签: java static annotations

我有兴趣做这样的事情:

public interface Foo {

  public static "abstract" Bar SOME_BAR; // subclasses define one of these

}

public interface Foo {

  public static "abstract" Baz buildABas(...); // subclasses define this method 

}

没有静态,这是OOP 101,但它不能在标准的oop java中完成。我想知道是否有一个注释可以确保这种行为?

编辑:

我有兴趣指定一组选项,这些选项定义了如何为“可配置”对象设置内容。这可能是命令行标志等。

1 个答案:

答案 0 :(得分:3)

我猜你想要的是拥有像

这样的方法
public void callFoo(Class<?> clazz)

并且您希望确保clazz具有方法public static void foo()

我想了一会儿,想到的任何技术都不会让你到那儿。您可以使用AnnotationProcessor来确保使用特定注释注释的任何类具有特定方法或具有哪些(如果不具有,则生成编译错误)但是无法确保(在编译时)传递给Class的{​​{1}}参数用注释注释。

这是一个让你半途而废的AnnotationProcessor:

callFoo(Class<?> clazz)

最终,我建议您允许它在运行时强制执行或重新设计代码,这样您就不需要使用静态方法。