0
因此,假設我有2類:任何方式來指定擴展多個類中的任何一個的Java泛型類型變量?
public class A
{
public void
f()
{
}
}
public class B
{
public void
f()
{
}
}
我想編寫,可以調用F的通用靜態方法時,通過一個實例或B.我想:
public class C
{
public static <T extends A & B> void
g(T t)
{
t.f();
}
public static void main(String[] args)
{
A a = new A();
g(a);
}
}
但編譯器聲明A不是「T擴展A & B」的有效替代品,我認爲這是因爲T必須擴展B和A,而B顯然A不。我找不到指定「T擴展A或B」之類的方法。這樣的事情是不可實現的嗎?我是一名java初學者,所以對此的任何幫助將不勝感激。
感謝您的輸入。我想我應該更精確一點 - 我正在尋找使用泛型靜態方法的第三方類,我不能修改。這些類沒有可用的通用接口,但出於某種原因,它們都實現了相同的功能。我試圖將當前需要爲每個類重載的重複性方法編碼合併到一個方法中。 –
我也意識到我可以通過在一個類中包裝第三方類實現這一點,實現常用的方法,並簡單地委託給第三方類方法,但我希望通過巧妙地使用泛型來避免這種笨拙:) –
@ MistahMikey你可以使用反射:'clazz.getMethod(「f」)。invoke(obj)'。 – Frithjof