我正在使用javaparser-1.0.8,並試圖生成以下通用方法。JavaParser添加通用類型作爲方法返回類型
public <T extends SomeInterface> T get(int param) {
return (T) doSomeMagic(param);
}
我有以下代碼是應該構建方法:
public static void main(String[] args) throws Exception {
// creates an input stream for the file to be parsed
File mainActivity = new File("<path>/Main.java");
FileInputStream in = new FileInputStream(mainActivity);
CompilationUnit cu;
try {
// parse the file
cu = JavaParser.parse(in);
addMethod(cu);
} finally {
in.close();
}
// prints the resulting compilation unit to default system output
System.out.println(cu.toString());
}
private static void addMethod(CompilationUnit cu) {
WildcardType wildcardType = new japa.parser.ast.type.WildcardType(ASTHelper.createReferenceType("SomeInterface", 0));
MethodDeclaration method = new MethodDeclaration(ModifierSet.PUBLIC, wildcardType, "get");
method.setModifiers(ModifierSet.addModifier(method.getModifiers(), ModifierSet.PUBLIC));
Parameter param = ASTHelper.createParameter(ASTHelper.INT_TYPE, "id");
ASTHelper.addParameter(method, param);
BlockStmt block = new BlockStmt();
method.setBody(block);
ASTHelper.addMember(cu.getTypes().get(0), method);
}
輸出:
public ? extends SomeInterface get(int id) {
}
我強烈建議遷移到2.3.0了JavaParser擁有該項目目前正在此處維護的Java 8 完整支持:HTTPS ://github.com/javaparser/javaparser 聲明:我是JavaParser提交者。 – 2015-11-17 23:43:17