首頁  >  文章  >  如何解析java中相對於泛型類別或介面的實作類別的所有實際類型?

如何解析java中相對於泛型類別或介面的實作類別的所有實際類型?

WBOY
WBOY轉載
2024-02-12 18:00:08945瀏覽

問題內容

我正在嘗試解析與泛型類別或介面相關的實作類別的所有實際類型。

我為此編寫了一個actualtypeargumentsresolver,但它僅在typename保持一致時才有效。我想忽略 typename 並取得所有實際類型。 我怎樣才能實現這個目標?

任何幫助將不勝感激。謝謝!

@Test
public void testIndirectlyExtendedGenericSuperclassWithDiffTypeName() {

    abstract class AbstractClass3 { }

    abstract class AbstractClass2 extends AbstractClass3 { }

    abstract class AbstractClass1 extends AbstractClass2 { }

    class Impl extends AbstractClass1 {}

    Type[] arr = ActualTypeArgumentsResolver.resolve(Impl.class, AbstractClass3.class);

    Assert.assertTrue(arr.length == 3);
    Assert.assertEquals(arr[0], Boolean.class);
    Assert.assertEquals(arr[1], Map.class);
    Assert.assertEquals(arr[2], String.class);
}

解決方法

guavatypetoken 支援此功能。在代表 impltypetoken 上使用 getsupertype 方法來取得 abstractclass3 的參數化版本以及所有實際類型參數。

65蜜蜂58535616

以上是如何解析java中相對於泛型類別或介面的實作類別的所有實際類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除
上一篇:多次延期簽約下一篇:多次延期簽約