Не знаю правильно ли поставлен вопрос, но по коду будет видно в чём его суть. Есть класс, использующий обобщение.
public abstract class TypeAdapter<T> {
public void write(JsonWriter out, T value) throws IOException {
if (value == null) {
out.nullValue();
} else {
TypeAdapter.this.write(out, value);
}
}
public abstract void write(JsonWriter jsonWriter, T t) throws IOException;
}
Пытаюсь воспользоваться данным классом:
public void toJson(Object src, Type typeOfSrc, JsonWriter writer) throws JsonIOException {
TypeAdapter<?> adapter = getAdapter(TypeToken.get(typeOfSrc));
try {
adapter.write(writer, src); //Вот здесь компилятор ругается. Как - смотрите ниже.
} catch (Throwable e) {
throw new JsonIOException(e);
}
}
Как ругается: пишет, что ожидает '?', а получает java.lang.Object. Но ведь '?' - это просто абстракция, демонстрирующая, что непонятно какой тип будет на этапе объявления переменной. По сути, тип будет понятен только в рантайме. К тому же, что может быть более абстрактней java.lang.Object? Как пыталась решить эту проблему:
TypeAdapter<src.getClass()> adapter = getAdapter(TypeToken.get(typeOfSrc));
Но, видимо, нельзя так в Java. Как устранить эту ошибку?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Привет! Появилась у меня проблема с jdk 10 (183)
В исходном коде класса SoftReference есть такое поле:
Стоит ли бросать Java 8 и продолжать свое обучение с Java 10? Тем более, как я слышал, они рассматривают идею перейти на полугодовой график релизов...
Проблема в следующем - хочу сделать мультиязычное Java web-приложение, чтобы во всех страницах приложения была возможность переключаться между...