Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как создать экземпляр класса от Singleton патерна через рефлекшен? / 7 сообщений из 7, страница 1 из 1
10.05.2007, 22:13:34
    #34517697
swerg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать экземпляр класса от Singleton патерна через рефлекшен?
Как создать экземпляр класса от Singleton патерна через рефлекшен?

Описываю проблему:
Есть строка с названием класса реализующий Singleton патерн.
Как получить экземпляр этого класса?
Дефаул конструктор private !!!

Вообще это возможно?

P.S. Вопрос с собеседования...
...
Рейтинг: 0 / 0
10.05.2007, 22:44:26
    #34517729
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать экземпляр класса от Singleton патерна через рефлекшен?
Запросто. Если конструкторов там один и он без параметров (для простоты не буду циклы всякие писать, проверки и тыды), то следующий код без проблем сделает что надо:
Код: plaintext
1.
2.
3.
4.
5.
...
    Constructor constructor = Singleton. class .getDeclaredConstructors()[ 0 ];
    constructor.setAccessible(true);
    Singleton singleton = constructor.newInstance();
...
Ну и как всегда играют настройки манагера безопасности. Через его можно запретить доступ к приватным конструкторам.
...
Рейтинг: 0 / 0
11.05.2007, 08:38:45
    #34517987
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать экземпляр класса от Singleton патерна через рефлекшен?
у singleton обычно есть метод getInstance, можно через этот метод экземпляр класса и получить

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 public   class  Test {
     private   static  Test ourInstance =  new  Test();

     public   static  Test getInstance() {
         return  ourInstance;
    }

     private  Test() {
    }


     public  String toString() {
         return  "this is a test";
    }

     public   static   void  main(String[] args)  throws  Exception {
        Method method = Test. class .getMethod("getInstance",  null );
        Test test = (Test) method.invoke( null ,  null );
        System.out.println(test);
    }
}
...
Рейтинг: 0 / 0
11.05.2007, 10:23:52
    #34518177
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать экземпляр класса от Singleton патерна через рефлекшен?
Причем тут методы getInstace?? Речь о том, можно ли в обход стандартных механизмов создать нелегальный инстанс Signleton-а...
...
Рейтинг: 0 / 0
11.05.2007, 10:49:54
    #34518282
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать экземпляр класса от Singleton патерна через рефлекшен?
ЗашедшийПричем тут методы getInstace?? Речь о том, можно ли в обход стандартных механизмов создать нелегальный инстанс Signleton-а...
тогда я неправильно понял задачу, просто из

swergОписываю проблему:
Есть строка с названием класса реализующий Singleton патерн.
Как получить экземпляр этого класса?
Дефаул конструктор private!!!
не совсем очевидно, что нужно получить нелегальный инстанс.
...
Рейтинг: 0 / 0
11.05.2007, 12:31:14
    #34518737
swerg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать экземпляр класса от Singleton патерна через рефлекшен?
Спасибо Зашедший.

До этого уроня я еще не дошел.

P.S. Каждый ламер мечтает стать хакером.
...
Рейтинг: 0 / 0
11.05.2007, 12:49:56
    #34518811
Зашедший
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать экземпляр класса от Singleton патерна через рефлекшен?
vas0тогда я неправильно понял задачу, просто <...> не совсем очевидно, что нужно получить нелегальный инстанс.
Кстати да, о такой постановке задачи я даже не подумал - слишком уж просто для вопроса на собеседованиии имхо :)
swergСпасибо Зашедший. До этого уроня я еще не дошел.
"Это" как раз очень просто, практически основы, в жабке есть куда более навороченные вещи :( Чем больше в ней варишься, тем больше понимаешь, что знать Java полностью просто невозможно (если рассматривать вместе J2SE/J2EE/J2ME).
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как создать экземпляр класса от Singleton патерна через рефлекшен? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]