我有一些奇怪的要求,我需要动态加载类,
这里我有一个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构造函数采用零参数。