讓我們說我有: public class Animal{..}
Java泛型延長
和public class Cat extends Animal {...}
public MakeNoise(Class<? extends Animal> animal1,
Class<? extends Animal> animal2){..}
爲什麼MakeNoise(new Animal(),new Animal())
不編譯?
而MakeNoise(new Cat(),new Cat())
確實編譯。
有沒有什麼辦法來解決這個問題,而不添加接口動物做:
Class<? extends AnimalInterface>
相同的原因。所以你的方法必須被稱爲'MakeNoise(Animal.class,Animal.class)',可能不是你想要的。它應該是'makeNoise(動物動物1,動物動物2){...}'(也請注意小寫的'm'-閱讀Java編碼約定)。除此之外,可能有一個重載方法接受'Cat',因此允許'MakeNoise(new Cat(),new Cat())'。 – Thomas
我知道 - 我有一個很大的應用程序,並希望避免在這裏進行大的重構。任何想法如何做到這一點? – Bazuka
你的方法簽名似乎是錯誤的(你可能想傳入實例而不是類定義),因此你需要重構一些。 – Thomas