动态 Class 在 java 中加载

Dynamic Class loading in java

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

这里我有一个 Interface

    public interface House
    {
       public Object loadHouseModel(String type);
       public Object loadHouseSpace(String type); 
     } 

现在所需的 class 将实现此接口

     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

的 class

要求是 DuplexHouse class 名称我将从属性中获取它,我所知道的是我获取的 class 名称将实现 House 接口。 所以我的财产看起来像这样 type_house=xx.xx.xxx.DuplexHouse,xx.xx.xx.TruplexHouse,..etc

根据房子的类型我需要加载相应的房子对象

所以在我的主要class Class cl = Class.forName(xx.xxx.xxx.DuplexHouse); 我的要求是我想要 House 内部包含 DuplexHouse 对象的实例 我该怎么做 ??

@Babel 我不太明白你的问题,但你可以检查一个对象是否是任何 class 的实例或与 instanceof 关键字的接口。

例如

boolean isLion = felineAnimal instanceof Lion boolean isWolf = canineAnimal instanceof Wolf

先做Class.forName。这将以 Class<?> 的形式为您提供 DuplexHouse class。在那上面,做newInstance()。它将以 Object 的形式为您提供 DuplexHouse 的实例。将其转换为 House 并且您的 DuplexHouse 实例的形式为 House.

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