Ich habe diese Frage, wie ich versuche, mein Programm „besser“ zu machen: PWie Objekt ändern Attribute innerhalb Methoden dynamisch
class GlobalVariables {
int att1;
int att2;
int att2;...
Ich verwende diese Klasse als eine Möglichkeit, jeden zu behandeln ziemlich globaler Wert, den ich in meinem Programm brauche.
Diese Klasse GlobalVariables
enthält viele Attribute, von denen jedes von einem Sensor abgerufen und von method3
geändert werden kann. Dies ist eine Validierungsmethode, um einige der Werte in einem Bereich zu halten.
In der Hauptklasse habe ich ein Objekt eine andere Klasse (sagen wir class2
).
Diese Objekte (lassen car
sagen) hat eine Methode:
car.method(gl)
gl
eine Instanz von GlobalVariables
zu sein.
Nun, innerhalb Methode, rufe ich method2
und innerhalb ich rufe method3
(alle von class2
).
this.method3 (int att1, int att2, int att3,)
this.method3 (int att2, int att3, int att1,)
this.method3 (int att3, int att1, int att2,)
Im Moment haben wir viele Anrufe von method3
und die 3-Parameter können durch eine Kombination dieser Sensorwerte werden so sein att37
in einer Angelegenheit zu sprechen att1
könnte.
So die Erklärung von method3
ist wie:
public void method3 (int n1, int n2, int n3){
n3=n1+n2;
}
Was soll ich tun, um die globalVariable.attXXX
zu ändern, wenn Java nur uns nach Wert übergeben Werte können.
Ich könnte natürlich 2 weitere Methoden und rufen Sie die entsprechende Methode und mit einem SET, aber ich denke, es ist so ziemlich, was ich versuche zu vermeiden.
Wenn ich SET sage, meine ich SETTER
Genau diesen Wert zurückgeben und auf dem anrufenden Standort zuweisen. – Elazar
Wenn diese ** global ** sind (etwas, das Sie in der OO-Programmierung vermeiden müssen), dann könnten Sie einfach 'gl.att1 = 1' schreiben. oder etwas ähnliches. Dann sollten Sie Ihre Methode3 ändern in: 'public void method3 (GlobalVariables g) {g.att3 = g.att1 + g.att2; } '. – MiguelKVidal
Das ist keine gute Idee. Bitte verfolgen Sie diesen Ansatz nicht weiter, insbesondere nicht, wenn Sie eine Reflexion entdecken. Machen Sie sie entweder öffentlich oder schreiben Sie Getter und Setter für jedes Feld. –