2012-04-12 1 views
1

: Es wird ein Verfahren wie dieses Refactoring:Referenzierung Rufenen, wenn in Eclipse

public int a() { 
    return 1 + b(); 
} 

Ist es möglich, den „Einführung Parameter“ Refactoring in Eclipse auf dem Ausdruck anwenden b(), so dass der Anrufer ruft tatsächlich die Methode b auf dem Angerufenen? Wie folgt aus:

o.a()   // old 
o.a(o.b()) // new 

Wenn ich es tun, es zu kopieren grundsätzlich & Pasten der Zeichenfolge „b()“ in den Ruf, den Sinn der Sache nicht machen, da diese Methode auf der Angerufenen ist, nicht der Anrufer. Aber vielleicht kennst du einen Trick?

Oder ist es alternativ möglich, das Refactoring "Methodensignatur ändern" zu verwenden und einen Ausdruck im Standardwert zu verwenden, der auf den Aufgerufenen verweist? Also, dass ich einen neuen Parameter auf a() erstellen könnte und einen Standardwert wie etwa ${this}.b() haben?

Antwort

2

Sie können dies indirekt tun:

  1. Indirection Einführung auf o.a() (nennen wir es a_tmp)
  2. Umgestalten a_tmp von return o.a() zu return o.a(o.b())
  3. Inline a_tmp
+0

Ich habe den Indirektionsoperator in der gleiche Klasse wie 'a()' und es funktioniert perfekt! – Wolfgang