Java:如何将 cast 类型转换为"Runtime"类?



代码片段:

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

比方说,我在运行时以Dog.Class的形式传递Class,并且我想键入cast到Dog类Object。我如何才能做到这一点,我上面的代码只是一个示例,我想要的。

它不像:

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

我将传递Class的一个实例作为参数,例如:Dog.Class、Cat.Class等。

您可以尝试泛型:

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()))

您可能会使用泛型:

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();    
}

尝试这个

Class typeCastedObject = cls.cast(getObjectBySomeCalculation());

相关内容

  • 没有找到相关文章

最新更新