Java 如何从包含子类的父类数组强制转换回父类
我有一个Java 如何从包含子类的父类数组强制转换回父类,java,list,class,inheritance,casting,Java,List,Class,Inheritance,Casting,我有一个Parent列表,其中包含Parent的子类,例如Child1或Child2。我现在想从那里得到一个元素 public <T> T getChild(Class<T> tClass) { for(Parent i: parents) { if(i.getClass==tClass) { return(T)i; } } return(null); } publi
Parent
列表,其中包含Parent
的子类,例如Child1
或Child2
。我现在想从那里得到一个元素
public <T> T getChild(Class<T> tClass)
{
for(Parent i: parents)
{
if(i.getClass==tClass)
{
return(T)i;
}
}
return(null);
}
public T getChild(类tClass)
{
适用于(家长i:家长)
{
if(i.getClass==tClass)
{
返回(T)i;
}
}
返回(空);
}
但是,由于某些原因,即使我转到
parents.add(new Child1())时,它也会返回null调用函数之前,请执行代码>。如果您有一个解决方案,那将非常受欢迎。这段代码适合我,尽管我不确定它是否是您要寻找的
import java.util.List;
公共类父类{
私有静态列表不应该是if(i.getClass()==tClass.getClass())?不,这会出错。更可能是if(i.getClass()==tClass)
…但是发布的代码甚至不应该编译。如果不使用c2.getClass(),我怎么能做到这一点
。我想能够做Child2.class
@BossCodeChild2.class
和c2.getClass()
将为您提供相同的类
。实际上不,这确实有效,我只是实现了错误的代码。很抱歉提出了一个愚蠢的问题。注意:1)等于
是不需要的,=
与类一起工作;2)避免未选中强制转换返回childClass.cast(I);