Не проверено приведение от X к универсальному типу, расширяющему X - PullRequest
0 голосов
/ 11 февраля 2019

Мне было поручено удалить как можно больше @SupressWarning s в нашей кодовой базе, и я не уверен, как обойти эту конкретную проблему.

У меня есть этот внешний метод, который возвращает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 ]

0 голосов
/ 11 февраля 2019

Чтобы расширить ответ ferpel , вы можете передать тип в качестве параметра

    class A <T extends Serializable> {

        public T someMethod(Class<T> type) {
            Serializable result = someExternalMethod(...);
            return type.cast(result);
        }
    }
0 голосов
/ 11 февраля 2019

попробуйте заменить строку, выдающую предупреждение о непроверенном приведении, на

T convertedObject = anyClassYouWant.cast(result);
...