Могу ли я узнать все мои * класс * переменные? - PullRequest
0 голосов
/ 20 октября 2011

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

Ответы [ 2 ]

3 голосов
/ 20 октября 2011

Вообще говоря, нет, вы не можете. Вы можете получить загрузчик текущего класса и разорвать его, используя отражение (ищите поле classes), ища классы, которые он уже загрузил.

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

Вы можете пойти дальше вверх по дереву загрузчика классов, используя getParent() и отыскивать classes в родителях. Что вы не можете сделать, так это найти все загрузчики классов - вы можете идти вверх по дереву, но не вниз по дереву. Проблема в том, что вы редко интересуетесь загрузчиками родительских классов - интересны братья и сестры.

0 голосов
/ 20 октября 2011

Вернитесь и перейдите по ссылкам на вопрос, есть довольно много других комбинаций вопросов и ответов, которые, я думаю, объясняют, но в принципе я думаю, что могут существовать разные статические экземпляры, если класс загружается разными загрузчиками классов, они будутскорее всего, они будут полностью отделены друг от друга, поэтому для того, что вы просите, у вас не может быть дублированных экземпляров

EDIT: в частности, этот может иметь несколько экземпляров статических переменных

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