2014-04-07 2 views
5

Eine nicht-statische Setter-Methode wie folgt aussehen:Java statische Selbstreferenzen

private int var; 

public void setVar(int var) { 
    this.var = var; 
} 

Und ich kann nicht herausfinden, wie das mit einer statischen Methode zu lösen:

private static int var; 

public static void setVar(int var) { 
    // ??? 
} 

One Lösung ist zu schreiben myClass.var = var;. Aber das ist hässlich, denn wenn ich meine Klasse umbenenne, muss ich alle Vorkommen finden und ersetzen. Eine andere Lösung besteht darin, den Parameter in v umzubenennen und var = v; zu schreiben. Für mich ist das auch hässlich.

Gibt es wirklich keine Möglichkeit, dies zu lösen, wie in php ?

+2

Wenn Sie eine richtige IDE verwenden, können Sie immer einen * Refactor Rename * machen, der auch einen expliziten Klassennamen ändert. – skiwi

+1

Wenn Sie beim Umbenennen Ihrer Klasse eine Refactoring-Lösung verwenden, sollte sie diese Referenzen für Sie übernehmen. –

+0

Aufgrund der Tatsache, dass das Klassenfeld 'var' privat ist, müssen Sie nie irgendwo anders als in der Klasse selbst nach Referenzen suchen, wenn Sie Ihre Klasse umbenennen, ohne ein geeignetes Refactoring-Tool (wie eine IDE) zu verwenden. Außerdem, wie finden Sie alle Importe in anderen Typen, wo Sie die Setter-Methode 'setVar()' verwenden, wenn Sie keine IDE verwenden? Ich schlage vor, Sie verwenden eine IDE und es sollte kein _real_ Problem da draußen sein. – Harmlezz

Antwort

1

Es ist nicht möglich, diese Dinge in anderer Art und Weise zu tun, als Sie wissen ....... ....

myClass.var = var; 
var = v; 

nur zwei Wege, die Sie bereits kennen .......... Beide sind gute ..no ein hässlich ist, können Sie uns e .......

wenn man so will jede IDE wie Eclipse verwendet, die dafür sorgen wird, wenn Sie Namen der Klasse ändern wird ...........

+0

@halloei glücklich, dass ich dir helfen könnte ......... –

1

Wir müssen wie folgt schreiben:

ClassName.var=var; 
1

es wie folgt tun:

public class Example { 

    private static int var; 

    public static void setVar(int var) { 
     Example.var = var; 
    } 
} 
2

Umbenennung der Feldvariablen ist der bequemste Weg. Werfen Sie einen Blick auf Android Code Style Guideline. Sie schlagen vor, alle statischen Felder wie sVariable zu benennen. Es ist nicht hässlich und sehr verständlich. So würde es so sein:

+0

Ich weiß nicht, wie andere IDEs verhalten, aber wenn ich eine Setter-Methode für 'sVar' mit NetBeans automatisch die Methodenname wird 'setsVar' anstelle von' setVar' sein. Nervig. – halloei

+0

@halloei nicht für mich ärgerlich, nur ein Zeichen zu löschen. – nikis

+0

Sie können diese Einstellung in dieser ID ändern. Eclipse und Intellj haben diese Option allerdings nicht über Netbeans sicher. Aber es sollte da sein. –