java中的动态类加载

时间:2017-02-15 04:00:29

标签: java classloader dynamic-class-loaders

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

这里我有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

基于House的类型我需要加载相应的house对象

所以在我的主要班级            Class cl = Class.forName(xx.xxx.xxx.DuplexHouse); 我的要求是我想要House内部持有DuplexHouse对象的实例 我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

首先做Class.forName。这将以DuplexHouse的形式为您提供Class<?>课程。在那,做newInstance()。它会以DuplexHouse的形式为您提供Object的实例。将其投放到House,您的DuplexHouse实例的格式为House

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

答案 1 :(得分:-1)

@Babel我无法理解您的问题,但您可以检查对象是否是instanceof关键字的任何类或接口的实例。

例如

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