1

我有以下代码(使用来自http://jd.bukkit.org/rb/doxygen/d6/d7b/EntityType_8java_source.html的 minecraft 的 bukkit EnittyType Enum ):

    for (EntityType e : EntityType.values())
    {
        System.out.println("Loading entity: " + e);

        Class<? extends Entity> c = e.getEntityClass();
        Entity en = c; // <-- This does not work and throws an error
        if (en instanceof Monster)
        {
            System.out.println("Monster --> " + e.getEntityClass());

        }

    }

我想通过Entity这种Class<? extends Entity>方式来检查这个特定的类是否是 Monster 类的实例。

我试图这样做c.newInstance(),但有很多例外,例如:

java.lang.InstantiationException: org.bukkit.entity.Egg
at java.lang.Class.newInstance(Unknown Source)
4

1 回答 1

5

这样我就可以检查这个特定的类是否是 Monster 类的实例。
...
我正在尝试使用 instanceof 例如:if (c instanceof Monster)

c是 a Class<? extends Entity>,这与 a 的实例不同Entity

您根本不需要构建Entity实例来执行此操作。使用Class#isAssignableFrom()

if (Monster.class.isAssignableFrom(c) {
    System.out.println("Monster --> " + e.getEntityClass());
}
于 2013-10-04T14:23:17.373 回答