[英]How to return a generic type in Java AST
我正在編寫一個程序來修改 Java 抽象語法樹 (AST),但我不知道如何生成通用返回類型。 誰能幫我?
生成的方法如下所示:
public static List<String> converter() {
return new ArrayList<String>();
}
我正在使用 com.sun.tools.javac.tree.TreeMaker.MethodDef() 生成方法的 JCTree,如下所示:
return treeMaker.MethodDef(
modifiers,
method,
returnType,
List.nil(),
List.nil(),
List.nil(),
methodBody,
null
);
一切都很好,但問題是“returnType”參數
它是一種 JCExpression 類型,我只能將其設置為“java.util.List”。
如何將其設置為List<String>
?
似乎沒有人回答我。 我該怎么辦?
用TreeMaker.TypeApply(JCExpression, List<JCExpression>)
包裝returnType
。
例如:
JCTree.JCMethodDecl method = treeMaker.MethodDef(
treeMaker.Modifiers(Flags.PUBLIC | Flags.STATIC),
names.fromString("getStrings"),
treeMaker.TypeApply(
treeMaker.QualIdent((Symbol) elements.getTypeElement("java.util.List")),
List.of(treeMaker.QualIdent((Symbol) elements.getTypeElement("java.lang.String")))
),
List.nil(),
List.nil(),
List.nil(),
treeMaker.Block(
0,
List.of(treeMaker.Return(
treeMaker.NewClass(
null,
List.nil(),
treeMaker.TypeApply(
treeMaker.QualIdent((Symbol) elements.getTypeElement("java.util.List")),
List.of(treeMaker.QualIdent((Symbol) elements.getTypeElement("java.lang.String")))
),
List.nil(),
null
)
))
),
null
);
會產生這樣的東西:
public static java.util.List<java.lang.String> getStrings() {
return new java.util.List<java.lang.String>();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.