簡體   English   中英

從對象列表java中獲取泛型類型

[英]get generic type from object list java

我有dozer框架的自定義轉換器

constom轉換器調用泛型類型列表源和泛型類型列表目標

public class ListCommonCustomConverter implements ConfigurableCustomConverter{
  public Object convert(Object destination, Object source, Class<?> destinationClass, Class<?> sourceClass) {
    log.info("Inside CommonCustomConverter :: convert");
    // Need to fine generic type of list
    return null;
  }
}

例如:如果List<Person>作為轉換器的目的地傳遞,我需要從轉換器方法內的目標對象獲取Person類。

預先感謝。

您可以通過調用getClass().getGenericInterfaces()來獲取泛型類型的類型信息getClass().getGenericInterfaces()如果您的類被聲明為: getClass().getGenericInterfaces()

public class ListCommonCustomConverter implements ConfigurableCustomConverter<Person>

但是由於這個轉換器沒有參數化,你可以做一個技巧:

public interface CustomConverterWithTypeInfo<T> extends ConfigurableCustomConverter{
}


public class ListCommonCustomConverter implements CustomConverterWithTypeInfo<Person>{
    public Object convert(Object destination, Object source, Class<?> destinationClass, Class<?> sourceClass) {
        Class<?> myClass = (Class)((ParameterizedType)getClass().getGenericInterfaces()[0]).getActualTypeArguments()[0];
        //...
    }
}

或者你可以簡單地做:

List<?> list = (List)destination;
if(!list.isEmpty()){
     Class<?> myClass = list.get(0).getClass();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM