情况:

@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您可以阅读有关泛型的更多信息。

07-24 09:27