Не проверено приведение от 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);
Другие вопросы по тегам