我有類Animal
和兩個小類Tiger
和Eagle
。兩個子類都有hunt
這個方法幾乎是一樣的。他們唯一的區別是受害人的類型。尋找方法是使用泛型類Field<T>
來尋找受害者。它看起來像這樣:作爲列表的類型的類對象
虎
void hunt(){
Field<Cattle> field = new Field<Cattle>();
List<Cattle> list = field.getObjects();
...
鷹
void hunt(){
Field<Rabbit> field = new Field<Rabbit>();
List<Rabbit> list = field.getObjects();
...
有什麼辦法來執行類似的東西?
void hunt(Object type){
Field<type> field = new Field<type>();
List<type> list = field.getObjects();
我知道,我可以得到表滿Object
類型和使用instanceof
後,但在這裏我們來的第二個問題:
是否可以調用if(object instanceof instanceOfSomeClass)
?
所以你想把'hunt()'方法移到超類? –
是的。我忘了提及這一點。 – nervosol
我想這是不可能的。一種選擇是使用泛型方法,但由於該方法既沒有任何參數,也沒有任何返回類型,因此不會推斷出類型參數。只有在子類中使用該方法會更有意義,因爲它們實際上是針對不同的數據進行操作的。 –