如何在不创建新对象的情况下 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 }哪个更容易操作