У меня есть класс с этим, это пример кода, а не реальный кодJava: Возможная статическая переменная, возможно?
private static String className;
public static Wish getInstance(Class<?> clazz) {
if(wish == null)
wish = new Wish();
className = clazz.getName();
return wish;
}
Многие классы используют этот Wish
класс, то каждый класс должен «сказать» желание с className
прошел в методе getInstance
.
Тогда у меня есть что-то вроде этого
public class Boy {
private Wish w = Wish.getInstance(Boy.class);
//at this moment the static variable take "com.package.Boy" value
....
}
Другой classs
public class Girl {
private Wish w = Wish.getInstance(Girl.class);
//at this moment the static variable take "com.package.Girl" value
....
}
Когда все начинают говорить свои пожелания, пример
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!");
}
}
Я знаю, что каждый объект имеет тот же копировать o класс Wish
и статическую переменную className
изменить, когда каждый объект (Girl, Boy
) вызывает метод Wish.getInstance(Class<?> clazz)
.
Как использовать статическую переменную (я хочу избежать создания экземпляра класса Wish) и сохранить правильное значение для переменной className
.
Могу ли я сделать это со статической переменной? или решение заключается в создании экземпляра (без статической переменной)
Например, log4j
имеет класс Logger
, я хочу сделать то же самое с именем класса.
В Java нет статических классов. Я не совсем уверен, что вы просите, но я думаю, что вы хотите использовать одноэлементный шаблон. https://en.wikipedia.org/wiki/Singleton_pattern –
Как выглядит метод iWish? – AdamSkywalker
Просто делает вывод 'System.out.println (w.className +" хочет "+ strWish);' –