Alrighty!У меня нет опыта работы с PulpCore, но я знаю как AS3, так и Java, поэтому думаю, что смогу ответить на ваш вопрос.Во-первых, я думаю, что я не на 100% понимаю, что нужно делать с объектом champ в классе Container, и я действительно не понимаю, почему вы делали Blunder as Class
вместо того, чтобы просто пропустить экземпляр Blunder.В любом случае, вот что я бы порекомендовал с тем, что у вас есть на данный момент:
public void initObjects() {
container = new Container(Blunder.class);
}
Как видите, вы можете получить экземпляр класса, просто получив свойство class
любого класса.Теперь у вас есть правильная идея с использованием Object
в качестве типа для конструктора контейнера для любого типа.Однако использование Object
является плохой практикой (вместо этого используйте перегрузку методов / более конкретные типы), и здесь это даже не требуется.Получение свойства class
всегда будет иметь тип Class
, даже если они представляют разные классы.Итак, перепишите конструктор так:
public Container(Class champ) {
}
Затем сделайте все, что вам нужно сделать с классом.
Теперь это в основном прямой порт, но, похоже, некоторые вещиты делаешь плохую практику.Вся система передачи объекта Class
кажется неактуальной и ненужной;почему бы просто не передать экземпляр объекта?Например, вот так:
public class Container {
protected Champion champ;
public Container(Champion champ) {
this.champ = champ;
}
}
Теперь сделайте Champion
абстрактный класс, содержащий общие методы для всех чемпионов:
public abstract class Champion {
protected Something something;
abstract Something getSomething();
}
(Очевидно, переменная / методздесь показаны только примеры.) Затем, пусть ваш индивидуальный класс Чемпионов подкласс Champion
:
public class Blunder extends Champion {
public Something getSomething() {
return this.something;
}
}
И т.д.Затем, наконец, сделайте следующее:
public void initObjects() {
container = new Container(new Blunder());
}
Очевидно, это базовый пример, и вам не нужно следовать моему совету.Но это, вероятно, будет проще, чем система, которая у вас уже была в AS3.