檢索 Java 清單的泛型類型
在 Java 中使用泛型類型時,檢索與泛型類型關聯的特定類別非常有用。考慮以下範例:
1 2 | List<String> stringList = new ArrayList<String>();
List<Integer> integerList = new ArrayList<Integer>();
|
登入後複製
在這種情況下,我們可能想要存取與這些清單關聯的實際類別類型,即 String 和 Integer。幸運的是,Java 提供了一種使用反射來檢索此資訊的方法。
使用反射
透過利用 getDeclaredField 方法,我們可以存取保存通用清單的類別中的欄位。從那裡,我們可以獲得字段的 ParameterizedType 並提取實際的類別資訊。下面是一個範例:
1 2 3 | Field stringListField = testClass.getDeclaredField( "stringList" );
ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();
Class<?> stringListClass = (Class<?>) stringListType.getActualTypeArguments()[0];
|
登入後複製
此程式碼將 Class 指派給stringListClass 變數的對象,讓我們可以確定清單的通用類型。可以使用相同的方法來檢索 integerList 欄位的泛型類型。
替代注意事項
如果列表是在方法的範圍內定義的,則無需檢索它們的泛型明確類型。這是因為類型資訊在方法的上下文中很容易取得。
以上是如何使用反射檢索 Java 清單的通用類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!