ich eine Klasse mit diesem haben, es ist ein Beispiel-Code, nicht der eigentliche CodeJava: Intuitive statische Variable, möglich?
private static String className;
public static Wish getInstance(Class<?> clazz) {
if(wish == null)
wish = new Wish();
className = clazz.getName();
return wish;
}
Viele Klassen verwenden diese Wish
Klasse, dann sollte jede Klasse „sagen“ ein Wunsch mit dem className
in dem Verfahren getInstance
geben.
Dann habe ich so etwas wie dieses
public class Boy {
private Wish w = Wish.getInstance(Boy.class);
//at this moment the static variable take "com.package.Boy" value
....
}
Ein weiterer classs
public class Girl {
private Wish w = Wish.getInstance(Girl.class);
//at this moment the static variable take "com.package.Girl" value
....
}
Wenn alle beginnen ihre Wünsche zu sagen, Beispiel
public class WishesDay {
private Girl g;
private Boy b;
public void makeYourWish() {
g = new Girl(); //get the com.package.Girl value
b = new Boy(); //get the com.package.Boy value
//sample output "com.package.Boy wants A pink house!"
g.iWish("A pink house!"); // the boys don't want this things :(
b.iWish("A spatial boat!");
}
}
Ich weiß, dass jedes Objekt die gleiche haben Kopieren Sie die Wish
Klasse und die statische Variable className
ändern, wenn jedes Objekt (Girl, Boy
) die Methode Wish.getInstance(Class<?> clazz)
aufruft.
Wie kann ich eine statische Variable verwenden (ich möchte verhindern, dass die Wish-Klasse instanziiert wird) und den korrekten Wert für die Variable className
beibehalten.
Kann ich das mit einer statischen Variable machen? oder die Lösung ist zu instanziieren (keine statische Variable)
Zum Beispiel log4j
hat die Logger
Klasse, ich möchte das gleiche mit dem Klassennamen machen.
In Java gibt es keine statischen Klassen. Ich bin mir nicht ganz sicher, was Sie tun wollen, aber ich denke, Sie wollen das Singleton-Muster verwenden. https://en.wikipedia.org/wiki/Singleton_pattern –
Wie sieht die iWish-Methode aus? – AdamSkywalker
macht nur eine Ausgabe 'System.out.println (w.className +" will "+ strWish);' –