java类<?扩展实体>如何获取实体的实例

Jam*_*bbs 1 java entity class bukkit

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

    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());

        }

    }
Run Code Online (Sandbox Code Playgroud)

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

我尝试过c.newInstance(),但有很多例外,例如:

java.lang.InstantiationException: org.bukkit.entity.Egg
at java.lang.Class.newInstance(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

Mat*_*all 5

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

c是一个Class<? extends Entity>,它与一个实例不同Entity.

您根本不需要构造Entity实例来完成此操作.用途Class#isAssignableFrom():

if (Monster.class.isAssignableFrom(c) {
    System.out.println("Monster --> " + e.getEntityClass());
}
Run Code Online (Sandbox Code Playgroud)