2017-01-19 1 views
0

Ich kann nicht verstehen, warum.CtUnaryOperator erweitert CtStatement

Im Ausdruck if (a++ > 0) {...}a++ kann kein Statement sein, aber da a++ ein CtUnaryOperator ist dann auch, es ist ein CtStatement.

Wie kann ich zwischen a++; und i = a++; unterscheiden, da in beiden Fällen a++ eine CtStatement ist?

Antwort

0

Um zwischen beiden zu unterscheiden, schaut man sich die Eltern an. Eine Klasse kapselt diese Logik:

// does element act as a statement? 
boolean hasStatementRole = new LineFilter().matches(element) 
+0

Die folgenden Fälle führen zu Problemen bei der Feststellung, ob ein 'CtStatement' tatsächlich eine Java-Anweisung ist, die den' getParent() '-Approach verwendet. 'foo (bar (a ++));' 'if ((i = a ++)> n) {...}' – DrStein

0

Da die Probleme in dieser Frage von Entwurfsentscheidungen im Löffel-Tool stammen, kann es nicht richtig beantwortet werden.