我有一個AnnotationExpr
,我如何獲取參數及其註釋的值(例如,@UnityBridge(fullClassName = "test")
- 如何獲取fullClassName
參數的值)。 JavaParser支持這個嗎?JavaParser AnnotationExpr獲取參數
我必須接受另一位訪客嗎?在這種情況下哪一個?
我有一個AnnotationExpr
,我如何獲取參數及其註釋的值(例如,@UnityBridge(fullClassName = "test")
- 如何獲取fullClassName
參數的值)。 JavaParser支持這個嗎?JavaParser AnnotationExpr獲取參數
我必須接受另一位訪客嗎?在這種情況下哪一個?
遲到的回答,我來到了同樣的問題,只是投了AnnotationExpr
到下列之一:
MarkerAnnotationExpr
(對於無參數),
SingleMemberAnnotationExpr
(單參數),
NormalAnnotationExpr
(用於多個參數)。
您可能需要instanceof
來確定當前註釋類型。
我更喜歡這種方法沒有的instanceof和搜索按類型而不是孩子,但你仍然需要一個單一的參數區分,而不鍵查找參數「值」:
private static final String VALUE = "value";
public static Expression getValueParameter(AnnotationExpr annotationExpr){
Expression expression = getParamater(annotationExpr, VALUE);
if(expression == null){
List<Expression> children = annotationExpr.getChildNodesByType(Expression.class);
if(!children.isEmpty()){
expression = children.get(0);
}
}
return expression;
}
public static Expression getParamater(AnnotationExpr annotationExpr, String parameterName){
List<MemberValuePair>children = annotationExpr.getChildNodesByType(MemberValuePair.class);
for(MemberValuePair memberValuePair : children){
if(parameterName.equals(memberValuePair.getNameAsString())){
return memberValuePair.getValue();
}
}
return null;
}