如何在不创建新对象的情况下 return 对象 class?
How to return object class without creating new one?
我有几个 classes 的层次结构:
有机体 -> 狐狸、羚羊、狼
我想创建一个方法来定义给定对象的 class,而不返回该对象的新实例。
像这样:
public Organism defineOrganismClass(Organism o) {
if (o instanceof Antelope) {
return ...;
}if (o instanceof Fox) {
return ...;
} //and so on
}
有办法吗?
是的,您可以 return Class<? extends Organism>
,例如Fox.class
。这将为您提供 class 定义,但没有实例。您不需要 if
语句,只需要 return o.getClass()
.
它当然会回避你想用它做什么的问题 class。也许您想定义一个枚举,例如enum OrganismType { ANTELOPE, FOX }
哪个更容易操作
我有几个 classes 的层次结构: 有机体 -> 狐狸、羚羊、狼
我想创建一个方法来定义给定对象的 class,而不返回该对象的新实例。
像这样:
public Organism defineOrganismClass(Organism o) {
if (o instanceof Antelope) {
return ...;
}if (o instanceof Fox) {
return ...;
} //and so on
}
有办法吗?
是的,您可以 return Class<? extends Organism>
,例如Fox.class
。这将为您提供 class 定义,但没有实例。您不需要 if
语句,只需要 return o.getClass()
.
它当然会回避你想用它做什么的问题 class。也许您想定义一个枚举,例如enum OrganismType { ANTELOPE, FOX }
哪个更容易操作