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

标签 java class entity bukkit

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

    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() , 但有很多异常(exception),例如:

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

最佳答案

that way I can check if this particular class is an instanceof a Monster class.
...
I am trying to use instanceof such as: if (c instanceof Monster)

cClass<? extends Entity> ,这与 Entity 的实例不同.

你不需要构造一个 Entity实例来做到这一点。使用 Class#isAssignableFrom() :

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

关于java类<?扩展实体>如何获取实体实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19183622/

相关文章:

java - 获取我的局域网 IP 地址 (192.168.xxxx) (IPV4)

java - 为什么 JavaFX 中没有 ObservableQueues?

java - Ant-TestNG 类路径问题 : getResource can't find the file

java - 建议我使用哪种 Java 格式来表示货币符号,以便它们可以轻松地显示在 JSP 页面上?

ruby-on-rails - 如何一次为所有类变量制作 'attr_reader' 或 'attr_writer'?

javascript - 线程中的异常 "main"java.lang.NullPointerException 如何从另一个类(Java 对象和类)检查客户

python - super 构造函数使用 *args 和 **kwargs 进行 __init__

ios - 检索核心数据实体中的最后一行/对象作为字符串

ASP.NET MVC 3 EntityType 没有定义键

database - Symfony2 : Database and Entity settings: Neither property . .. 类中也没有方法 ... 也没有方法 ... 存在于类中