如何使用Java注释插入一些C宏的样板代码?

如何使用Java注释插入一些C宏的样板代码?,java,annotations,code-generation,Java,Annotations,Code Generation,我想使用Java注释插入代码(方法调用等)。假设我有这样的代码: ActionBar bar = getActionBar(); assert bar != null; bar.setIcon(android.R.color.transparent); EventBus.getDefault().register(this); checkGPS(); 此代码出现在每个“我的活动”类中。我不想每次都写它,而是想有这样的东西:@PrepareAct

我想使用Java注释插入代码(方法调用等)。假设我有这样的代码:

     ActionBar bar = getActionBar();
     assert bar != null;
     bar.setIcon(android.R.color.transparent);
     EventBus.getDefault().register(this);
     checkGPS();

此代码出现在每个“我的活动”类中。我不想每次都写它,而是想有这样的东西:
@PrepareActivity
,它将扩展代码。在C或C++中,我可以简单地使用<代码>定义定义准备活动…< /代码>。我可以用Java注释编写同样的代码吗?如何做到这一点?谢谢。

我从这篇文章的答案中了解到,似乎没有标准的方法来做你想做的事。也许可以使用面向方面的编程,或者链接文章中的答案可能会有所帮助


Lombok项目也做了类似的事情,他们解释了他们的技巧

注释并不是为了改变代码。有一些特殊的Java编译器(例如)可以修改这些规则

但你不需要任何花哨的东西。只需让类实现一个包含
getActionBar()
checkGPS()
的接口,然后就可以编写一个静态助手方法:

public static void prepare( IThing thing ) {
     ActionBar bar = thing.getActionBar();
     assert bar != null;
     bar.setIcon(android.R.color.transparent);
     EventBus.getDefault().register(this);
     thing.checkGPS();
}

无法创建方法
prepareActivity(…)?谢谢。这有帮助!但是你能解释一下为什么注释不能改变代码吗?我以为它们是为代码生成而设计的,而像
googleguice
Spring
Dagger
这样的库大量使用了这一功能。或者我误解了什么?注释可以生成额外的代码(即新类和其他文件)。它们不得修改包含它们的代码。请参阅您提到的库使用注释对代码运行附加检查(无修改)、在类路径上查找类和方法等。它们都没有实际修改包含注释的类的字节码。