代码段:
private List<Animals> createAnimanlsIstance(Class cls) {
Class typeCastedObject = (cls)getObjectBySomeCalculation();
}
让我们说,我在运行时传递Class为Dog.class,我想输入强制转换为Dog类Object。 我怎样才能做到这一点,我的上述代码只是一个样本,我想要的。
它不像:
if( obj instanceOf ClassA)
{
Object = (ClassA) obj;
}
我将传递一个Class的实例作为参数,例如:Dog.class,Cat.class等。
答案 0 :(得分:1)
您可以尝试使用泛型:
private <T> List<Animals> createAnimalsInstance(Class<T> cls)
{
T typeCastedObject = (T) getObjectBySomeCalculation();
}
然后您可以照常使用此方法:
List<Animals> animals = createAnimalsInstance(Dog.class);
仅供参考:如果您想instanceof
,可以使用Class.isAssignableFrom
:
if (obj instanceOf AClass)
等同于
if (AClass.isAssignableFrom(obj.getClass()))
答案 1 :(得分:1)
您可以使用泛型:
private <T> List<Animal> createAnimalsInstances(Class<T> clazz) {
T castedObject = (T) getObjectBySomeCalculation();
}
如果要将演员对象添加到List<Animal>
(即正在扩展Animal
),那么您需要:
private <T extends Animal> List<Animal> createAnimalsInstances(Class<T> clazz) {
T castedObject = (T) getObjectBySomeCalculation();
}
答案 2 :(得分:0)
试试这个
Class typeCastedObject = cls.cast(getObjectBySomeCalculation());