我有一些奇怪的要求,我需要动态加载一个类,
这里我有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
对象的实例
我怎么能这样做?
答案 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