Как получить двоичное имя Java-класса, если у него только полное имя?
Классы и методы отражения, а также загрузчики классов и т. Д. Требуют так называемых «двоичных» имен классов для работы.
Вопрос в том, как получить двоичное имя, если у него только полное имя, то есть имя, которое можно использовать в исходном коде.
Например:
package frege;
public static class RT {
....
public static class X { .... }
}
Полное имя класса будетfrege.RT.X
, Тем не менее, чтобы получить объект класса, нужно написать:
Class.forName("frege.RT$X")
и нет
Class.forName("frege.RT.X") // fails with ClassNotFoundException
потому чтоX
случается, внутренний классfrege.RT
.
Возможным, но неуклюжим решением было бы заменить.
с участием$
от одного до другогоClass.forName()
не бросаетClassNotFoundException
больше или больше нет.
заменить.
Есть ли лучшее / хорошо известное / стандартное решение? Я посмотрел в документах API дляClass
, CLassLoader
а такжеjava.lang.reflect
но не нашел ничего полезного.