Динамическая загрузка классов в 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

Другие вопросы по тегам