![](/img/trans.png)
[英]How to get an anonymous instance that extends a class from a field with java reflection?
[英]java Class<? extends Entity> how to get instance of Entity
我有以下代碼(使用Minecraft的bukkit EnittyType枚舉來自: 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());
}
}
我想從Class<? extends Entity>
獲得Entity
Class<? extends Entity>
Class<? extends Entity>
,這樣我就可以檢查這個特定的類是否是Monster類的實例。
我嘗試做c.newInstance()
,但是有很多異常,例如:
java.lang.InstantiationException: org.bukkit.entity.Egg
at java.lang.Class.newInstance(Unknown Source)
這樣我可以檢查這個特定的類是否是Monster類的實例。
...
我正在嘗試使用instanceof,例如:if (c instanceof Monster)
c
是Class<? extends Entity>
Class<? extends Entity>
,它與Entity
的實例不同。
您根本不需要構造一個Entity
實例即可完成此操作。 使用Class#isAssignableFrom()
:
if (Monster.class.isAssignableFrom(c) {
System.out.println("Monster --> " + e.getEntityClass());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.