在运行时或运行之前用日志记录替换java注释

dsk*_*ner 5 java android comments annotations

我很好奇是否可以在类或方法上使用注释,在运行期间或之前,使用注释字符串的日志记录替换注释.例如,如果在android上:

@LogComments
class MyActivity extends Activity {
    @Override public void onCreate(Bundle b) {
        super.onCreate(b);
        // set some local vars
        int a = 1;
        int b = 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

会翻译成类似的东西

class MyActivity extends Activity {
    @Override public void onCreate(Bundle b) {
        super.onCreate(b);
        Log.d("TAG", "set some local vars");
        int a = 1;
        int b = 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

chu*_*ubs 1

盒子外面。不,没有任何东西可以允许这样做。

现在,如果您想自己构建它,您也许可以创建某种编译器扩展,它允许您解析文件并根据存在的注释将注释转换为日志表达式。但这必须作为编译阶段的一个步骤发生,因为注释不是类文件的一部分,因此它无法在运行时发生。

但是,您正在谈论一个相当大的副项目来创建这样的东西。另外,这种方法也有局限性,比如如果不向注释中添加某种表达式语言,就不可能在运行时写出变量值。最后,您将创建一些复杂的东西,而不是已经存在的、强大的、并且通过使用 API 被使用了数百万次的东西。