注释中的属性不支持动态值 - AspectJ Android [AOP Android]

时间:2016-11-17 14:09:11

标签: android aop aspectj

我使用自定义注释来记录用户点击的id。但是我收到错误“属性值必须是常量”。我的代码段在下面。

mAssetId= Asset.getContentId();

  @TrackEvent("track_event")
    @ArrayParams({@Params(key = "content_id",value = mAssetId)})
    protected void attributeMethod() {
    }

提前致谢。有没有办法在注释中传递动态值而不是静态变量或常量。我正在使用 AspectJ 库来安装android。

3 个答案:

答案 0 :(得分:0)

无法在注释属性中指定运行时值,只有常量,甚至可能类型的集合仅限于几种类型:

  

原语,字符串,类,枚举,注释和前面类型的数组

根据Java 5 Language Guide - Annotations

答案 1 :(得分:0)

是的,没错,我找到了一个使用注释记录运行时间值的解决方案。同时我在动画中略微改变以支持这个

 @TrackEvent("track_event")
    protected void attributeMethod(@Params("id") String value) {
    }

就我而言,它有效,希望任何人都可以帮助。

答案 2 :(得分:0)

在aspectj本机语法中,您可以捕获所需的任何运行时变量:

pointcut rtVar(int id): set(* int SomeClass.mAssetId) && args(id) && within(SomeClass);

然后将此id变量转换为joinpoint。