У меня есть следующие классы.Кастинг класса с использованием отражения в java
abstract class A{}
class B extends A{}
class C extends A{}
Мне нужно создать объект, как этот
A a = new B();
я получаю имя класса подкласса во время выполнения. Итак, мне нужно использовать отражение для создания объекта.
Я сделал это.
Class<?> klass = Class.forName(className);
Теперь я не могу отнести этот класс к подклассу.
Я хочу добиться
A a = klass.newInstance(); // returns Object
Я хочу, чтобы объект быть отлиты в подкласс (или B
или C
, решил на время выполнения)
Как это сделать?
Что случилось с 'A a = (A) klass.newInstance();'? –
@AleksG Мне нужно получить доступ к функциям в подклассе. – rgksugan
Что не так с 'switch (name) {case" B ": return new B(); case «C»: вернуть новый C(); default: throw new SomeException(); } '?/Что случилось с 'Class.newInstance'? Много. Если вы проходите через 'Constructor.newInstance', лучше использовать' asSubclass' спереди. –