我有几个班级的层次结构: 生物->狐狸,羚羊,狼
我想创建一个方法来定义给定对象的类,而又不返回该对象的新实例。
类似这样的东西:
public Organism defineOrganismClass(Organism o) {
if (o instanceof Antelope) {
return ...;
}if (o instanceof Fox) {
return ...;
} //and so on
}
有办法吗?
答案 0 :(得分:1)
是的,您可以改为返回Class<? extends Organism>
,例如Fox.class
。这将为您提供类定义,但没有实例。您不需要if
语句,只需要return o.getClass()
。
它当然会问一个问题,然后您想对该类进行处理。也许您想定义一个枚举,例如enum OrganismType { ANTELOPE, FOX }
,更易于操作。