Динамическая загрузка классов в Java
У меня есть какое-то странное требование, мне нужно динамически загрузить класс,
здесь у меня есть Interface
public interface House
{
public Object loadHouseModel(String type);
public Object loadHouseSpace(String type);
}
теперь нужный класс будет реализовывать этот интерфейс
public class DuplexHouse implements House
{
public Object loadHouseModel(String type)
{
///Method body goes here
}
public Object loadHouseSpace(String type)
{
///Method body goes here
}
}
Теперь мое требование заключается в том, что мне нужно загрузить DuplexHouse
или любой другой класс, который реализует House
Требование заключается в том, что DuplexHouse
Имя класса, которое я получу из свойств, и все, что я знаю, это Имя класса, которое я получу. House
Интерфейс. так что моя собственность выглядит так type_house=xx.xx.xxx.DuplexHouse,xx.xx.xx.TruplexHouse,..etc
В зависимости от типа дома мне нужно загрузить соответствующий объект дома
Так в моем основном классе Class cl = Class.forName(xx.xxx.xxx.DuplexHouse);
Мое требование я хочу House
Экземпляр, который внутренне содержит DuplexHouse
объект Как я могу это сделать??
2 ответа
Сначала сделай Class.forName
, Это даст вам DuplexHouse
класс в виде Class<?>
, На что делаю newInstance()
, Это даст вам пример DuplexHouse
в форме Object
, В ролях это House
и у вас есть DuplexHouse
экземпляр в виде House
,
Предполагается, что (1) класс DuplexHouse в пути к классам (2) Конструктор DuplexHouse принимает нулевые аргументы.
@Babel Я не совсем понял ваш вопрос, но вы можете проверить, является ли объект экземпляром какого-либо класса или интерфейса с instanceof
ключевое слово.
Например
boolean isLion = felineAnimal instanceof Lion
boolean isWolf = canineAnimal instanceof Wolf