正如你在你的評論中提到的,你必須使用resolveTypeBindings()
。
M1(7)
將被表示爲:
ExpressionStatement [655, 6]
EXPRESSION
MethodInvocation [655, 5]
> (Expression) type binding: void
> method binding: Main.M1(int)
ResolvedTypeInferredFromExpectedType: false
Boxing: false; Unboxing: false
ConstantExpressionValue: null
EXPRESSION: null
TYPE_ARGUMENTS (0)
NAME
ARGUMENTS (1)
NumberLiteral [658, 1]
> (Expression) type binding: int
Boxing: false; Unboxing: false
ConstantExpressionValue: 7
TOKEN: '7'
所以具有ExpressionStatement
你會發現,它有Expression
這是MethodInvocation
那麼你可以得到它的參數,這將是NumberLiteral
,然後你可以使用resolveTypeBindings()
注意:在評論中,您被告知檢查它是否爲NumberLiteral
並假定它是數字。是的,這是真的這是一個數字,但你不知道它的類型;無論是int
還是double
或其他東西。
P.S.上面的樹形表示是使用ASTView plug-in製作的,這對於使用AST非常有幫助,所以如果您尚未擁有它,我建議您獲取它。
是的。閱讀Java標準。它會告訴你規則。 –
我想我已經想通了。您在傳遞的參數上調用resolveTypeBindings()。 – gracey
我的想法是檢查參數表達式的類型,如果它是[NumberLiteral](http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference %2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FNumberLiteral.html)你遇到了一個數字。 – Katona