我有一些奇怪的要求,我需要动态加载类,

这里我有一个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实例
我怎样才能做到这一点 ??

最佳答案

首先执行Class.forName。这将以DuplexHouse的形式为您提供Class<?>类。在此上,执行newInstance()。它会以DuplexHouse的形式为您提供Object的实例。将其强制转换为House,您将以DuplexHouse的形式拥有House实例。

这假设(1)类路径中的DuplexHouse类(2)DuplexHouse构造函数采用零参数。

09-16 06:18