我有以下代码(使用来自 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)
c
是 Class<? 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/