簡體   English   中英

如何在不迭代所有可能類型的情況下確定對象類型?

[英]How to determine an objects type without iterating through all possible types?

我有很多課程。 這些類具有相似的屬性名稱,但具有不同的值。 例如,我有SpearmenSwordsman 這兩個類具有相同的屬性名稱,但具有不同的值。 現在。 假設我要再上一堂課。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM