1
У меня возникли проблемы с созданием внутреннего класса с использованием отражения. Вот пример.Java - Как создать экземпляр внутреннего класса с отражением?
public final class Cow {
public Cow (Bufallo flying, Horse swimming, int cowID, int numCows) {
//This is where the part I really dont know what the cow is doing
}
public Bull eatGrass(String grassName, AngusCattle farmName, JerseyCattle farmName){
Ox newBreed = new Ox(australiaFarm, somewhereOutThere);
//Something that has to do with cow eating grass
return Bull;
}
private static final class Ox extends BigHorns {
public Ox (AngusCattle farmName, ChianinaOx farmName) {
//Something about mating
}
}
}
все, что я хочу, это получить конструктор или просто создать экземпляр внутреннего класса. Мой код до сих пор ...
CowManager cowManager = (CowManager) this.getSystemService(Context.COW_SERVICE);
final Class MainCowClass = Class.forName(cowManager.getClass().getName());
final Class[] howManyCows = MainCowClass.getDeclaredClasses();
Class getCow = null;
for (int i=0; i < howManyCows.length; i++) {
if (! howManyCows[i].getName().equals("Cow$Ox")) {
continue;
}
getCow = Class.forName(howManyCows[i].getName());
}
Constructor createCow = getCow.getDeclaredConstructor();
по состоянию на данный момент я не могу показаться, чтобы найти конструктор вола внутри коровы
Я получаю java.lang.InstantiationException: класс com.sample.Cow не имеет конструктора аргументов нуля, когда я делаю команду cowClassInstance. –
Я также хочу добавить, почему мне нужно создать новый экземпляр, когда я уже создал новый экземпляр 'CowManager cowManager = (CowManager) this.getSystemService (Context.COW_SERVICE);'? Означает ли это, что я должен создать новый экземпляр? или заменить код кодом? –
Ошибка «no zero argument» означает, что вы не передаете необходимые аргументы для инициализации конструктора. Я упомянул об этом в комментариях. И нет, если у вас уже есть экземпляр класса, тогда вам не нужно создавать новый экземпляр. –