статические финалы и несколько загрузчиков классов - PullRequest
2 голосов
/ 14 марта 2011

У меня есть определение, подобное этому

public static final Object foo = Xyz.generateFoo(); 

И мое приложение использует несколько пользовательских загрузчиков классов. Как я могу убедиться, что все классы видят один и тот же экземпляр foo?

Желательно без обращения к внешнему хранилищу (т.е. System.Properties или файлу). Спасибо.

Ответы [ 3 ]

4 голосов
/ 14 марта 2011

Поместите ссылку на значение в классе, загруженном общим родительским загрузчиком классов.

1 голос
/ 14 марта 2011

Обратите внимание, что нет способа гарантировать это, если некоторые из ваших пользовательских загрузчиков классов нарушают правило «сначала проверять родительский загрузчик классов» (например, как это делают загрузчики классов webapp).

В противном случае вы можете поместить это поле в класс, загруженный родительским загрузчиком классов, как предложено Томом Хоутином.

0 голосов
/ 14 марта 2011

Это то, что вы хотите, чтобы возвращение этого Xyz.generateFoo(); было одинаковым все время или после присвоения переменной public static final Object foo = Xyz.generateFoo(); вы хотите получить доступ к одному и тому же экземпляру в любом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...