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