Служба преобразования Spring Generic (параметризованного типа)?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Служба преобразования Spring Generic (параметризованного типа)?

Сообщение Anonymous »

Я пытаюсь создать универсальный преобразователь для Spring, который позволит входящим значениям Enum смешивать регистр и преобразовывать их в UpperCase() перед сопоставлением с перечислением.
Преобразование хорошо работает для любого конкретного типа Enum, который мы используем, когда Converter определен для определенного типа перечисления. Однако когда я пишу это как общий Spring, он никогда не вызывает код.

Код: Выделить всё

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

// Doesn't work, Spring doesn't appear to allow Converters with type parameters :-(
@Component
public class StringToEnumConverter  implements Converter {

@Override
public T convert(String string) {
Type type = ((ParameterizedType)StringToEnumConverter.class.getGenericSuperclass()).getActualTypeArguments()[0];
return (T) Enum.valueOf((Class)type, string.trim().toUpperCase());
}
}
Это неправильный код или Spring не знает, как сопоставить тип во время выполнения? Я надеялся, что T расширяет Enum и будет достаточно информации для Spring, чтобы отправить сюда все подклассы Enum.

Подробнее здесь: https://stackoverflow.com/questions/195 ... on-service
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»