android 或者 java 玩过 Annotation Processing Tool 能帮我看看这个问题吗?
JCIdent paramType = mTreeMaker.Ident(getName("String"));
JCArrayTypeTree paramArray = mTreeMaker.TypeArray(paramType);
JCVariableDecl paramDecl = mTreeMaker.VarDef(mTreeMaker.Modifiers(Flags.PARAMETER),
getName("args"), paramArray, null);
return List.from(new JCVariableDecl[]{paramDecl});
如上代码可以构造出一个 方法的参数即String[] args
。
我想构造这样一个方法query(@Tag(name="user")User user)
,方法参数里的注解就不知道该怎么构造了
JCTree.JCIdent paramType =treeMaker.Ident(names.fromString("com.test.annotations.Tag"));
JCTree.JCAssign jcAssign=treeMaker.Assign(treeMaker.Ident(names.fromString("value")),
treeMaker.Ident(names.fromString("\"user\"")));
JCTree.JCAnnotation jcAnnotation = treeMaker.Annotation(paramType, List.of(jcAssign));
用上面构造的jcAnnotation
去进一步构造JCVariableDecl
,可是最终编译器告诉我:找不到符号:com.test.annotations.Tag
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.