1 回答

TA貢獻(xiàn)1854條經(jīng)驗 獲得超8個贊
您可以訪問字段泛型類型,通過field.getGenericType()它返回ParameterizedType類的實現(xiàn),其中方法getActualTypeArguments()返回類型參數(shù)。這是可用的List,Map等
然后您的父級過濾代碼可能如下所示:
Arrays.stream(Test.class.getDeclaredFields())
.filter(field -> field.getType().equals(List.class)
&& field.getGenericType() instanceof ParameterizedType
&& ((Class) ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0]).getSuperclass().equals(Parent.class))
.forEach(field -> System.out.println(field.getName()));
您當(dāng)然可以添加一些安全檢查 - 例如返回的數(shù)組是否getActualTypeArguments()為空。
添加回答
舉報