[英]How to determine an objects type without iterating through all possible types?
我有很多課程。 這些類具有相似的屬性名稱,但具有不同的值。 例如,我有Spearmen
和Swordsman
。 這兩個類具有相同的屬性名稱,但具有不同的值。 現在。 假設我要再上一堂課。 Entity
。 我怎么可以調用類的構造函數和specifiy實體應該是哪種類型的單位,不通過的if語句來decicide的是否鏈式要去object
是更具體類型Swordsman
或類型Spearmen
或...通過我的所有類。
我可以舉一個簡單的可運行示例,但是我不確定自己是否有必要,因為我在上面已經解釋過了
我可以建議您做的是創建一個基類,讓我們稱之為英雄
public class Hero
{
public HeroType Type { get; set; }
public int Power { get; set;}
public Hero(HeroType type, int power){
this.Type = type;
this.Power = power;
}
....
}
然后創建一個英雄類型的枚舉:
enum HeroType{
Spearmen,
Swordsman,
...
}
每次創建新英雄時,只需指定其類型即可
Hero swordsman = new Hero(HeroType.Swordsman,50)
這樣,您就不必創建多個類,並且可以將所有對象保存在同一集合中,因為它們都來自相同的基本類型。
並且,如果您需要具有更多屬性的特殊Hero,則可以創建一個繼承自Hero
基類的新類。
如果要找出對象的類名稱,可以嘗試:
String className = variable.getClass().getSimpleName();
Java Reflection API將為您提供完成所需內容的方法。 Object.getClass()....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.