Не проверено приведение от X к универсальному типу, расширяющему X
Мне было поручено удалить как можно больше @SupressWarning
Это возможно в нашей базе кода, и я не уверен, как обойти эту конкретную проблему.
У меня есть этот внешний метод, который возвращает Serializable
объект и универсальный тип T extends Serializable
что я хотел бы бросить объект.
Вот упрощенная версия кода:
class A <T extends Serializable> {
public T someMethod() {
Serializable result = someExternalMethod(...);
T convertedObject = (T) result; // produces unchecked cast warning
return convertedObject;
}
}
Возможно ли выполнить это преобразование, не создавая непроверенное предупреждение о приведении (при условии, что внешний метод не может быть изменен)?
Это Java 8.
2 ответа
Решение
Чтобы расширить ответ ferpel, вы можете передать тип в качестве параметра
class A <T extends Serializable> {
public T someMethod(Class<T> type) {
Serializable result = someExternalMethod(...);
return type.cast(result);
}
}
Попробуйте заменить строку, которая выдает непроверенное предупреждение, на
T convertedObject = anyClassYouWant.cast(result);