情况:
@Handler
public void handle(@Header("type") List<ListingType> listingType) {
System.err.println(listingType);
}
...
public enum ListingType {
TYPE_A,
TYPE_B
}
如果listingType的值是某个String,但不表示Enum的值,则Camel会将其解析为List 。
例如,如果listingType =“ foo”
System.err.println(listingType);
=> ["foo"]
我尝试使用自定义FallBackConverter
@FallbackConverter
public static <T> Object convertTo(Class<T> type, Exchange exchange, Object value, TypeConverterRegistry registry) {
Class<?> concreteClass = ...
if (List.class.isAssignableFrom(type) && concreteClass.isEnum()) {
...
}
}
但是,如何获得列表的具体通用类型?
编辑:
还是有其他解决方案将String转换为枚举的具体列表?
最佳答案
您无法在运行时执行此操作。 Java中的泛型仅在编译阶段出现,无论如何都不会影响程序。
Here您可以阅读有关泛型的更多信息。