2014-04-23 40 views
2

代码片段:Java:如何将类型转换为“运行时”类?

private List<Animals> createAnimanlsIstance(Class cls) { 
    Class typeCastedObject = (cls)getObjectBySomeCalculation(); 

} 

可以说,我通过类如Dog.class在运行时,我想类型转换为狗类对象。 我该如何做到这一点,我的上面的代码只是一个样本,我想要的。

它不象:

if(obj instanceOf ClassA) 
{ 
    Object = (ClassA) obj; 
    } 

我将通过类的实例作为参数,例如:Dog.class,Cat.class等

回答

1

你可以尝试仿制药:

private <T> List<Animals> createAnimalsInstance(Class<T> cls) 
{ 
    T typeCastedObject = (T) getObjectBySomeCalculation(); 

} 

然后你可以像往常一样简单地使用这种方法:

List<Animals> animals = createAnimalsInstance(Dog.class); 

FYI:如果你想要做instanceof你可以使用Class.isAssignableFrom

if (obj instanceOf AClass) 

相当于与

if (AClass.isAssignableFrom(obj.getClass())) 
+0

让我尝试所有这些,感谢所有的建议和太,一个快速:) – sandejai

1

你也许可以使用泛型:

private <T> List<Animal> createAnimalsInstances(Class<T> clazz) { 
    T castedObject = (T) getObjectBySomeCalculation();  
} 

如果铸造的物体打算被加入到中(即正在扩展Animal),那么你就需要:

private <T extends Animal> List<Animal> createAnimalsInstances(Class<T> clazz) { 
    T castedObject = (T) getObjectBySomeCalculation();  
} 
+0

Thannks,但所有通过的分类是不相关的,并且在类型转换之后,我必须调用一个api(所有类通用)。 – sandejai

0

试试这个

Class typeCastedObject = cls.cast(getObjectBySomeCalculation()); 
相关问题