Каков наилучший/правильный способ создания одноэлементного класса в java?Как создать одноэлементный класс
Одна из реализованных мной реализаций - это использование частного конструктора и метода getInstance().
package singleton;
public class Singleton {
private static Singleton me;
private Singleton() {
}
public static Singleton getInstance() {
if (me == null) {
me = new Singleton();
}
return me;
}
}
Но реализация терпит неудачу в следующем тесте
package singleton;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class Test {
/**
* @param args
* @throws NoSuchMethodException
* @throws SecurityException
* @throws InvocationTargetException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws IllegalArgumentException
*/
public static void main(String[] args) throws SecurityException,
NoSuchMethodException, IllegalArgumentException,
InstantiationException, IllegalAccessException,
InvocationTargetException {
Singleton singleton1 = Singleton.getInstance();
System.out.println(singleton1);
Singleton singleton2 = Singleton.getInstance();
System.out.println(singleton2);
Constructor<Singleton> c = Singleton.class
.getDeclaredConstructor((Class<?>[]) null);
c.setAccessible(true);
System.out.println(c);
Singleton singleton3 = c.newInstance((Object[]) null);
System.out.println(singleton3);
if(singleton1 == singleton2){
System.out.println("Variable 1 and 2 referes same instance");
}else{
System.out.println("Variable 1 and 2 referes different instances");
}
if(singleton1 == singleton3){
System.out.println("Variable 1 and 3 referes same instance");
}else{
System.out.println("Variable 1 and 3 referes different instances");
}
}
}
Как решить эту проблему?
Спасибо
*» Но выполнение не выполняется в следующем тестовом случае »* - Что именно вы имеете в виду под« ошибкой »? – cdhowie 2010-12-06 03:24:17
Позволяет создавать множественное отражение броска экземпляра – 2010-12-06 03:25:44
Лучший способ, в 99,99% случаев, основанный на моем многолетнем профессиональном опыте, состоит в том, чтобы ** не делать этого **. Как вы думаете, на самом деле нужен синглтон? – 2010-12-06 03:27:07