Как получить что-то вроде `MyClass<String>.class` в Java

Я пытаюсь создать кастом ArgumentExtractor в Ninjaframework, в котором я должен создать класс, который реализует ninja.params.ArgumentExtractor<T> у которого есть метод public Class<T> getExtractedType()

import java.util.Optional;
class OptionalParamExtractor implements ArgumentExtractor<Optional<String>> {
    ...
    @Override
    public Class<Optional<String>> getExtractedType() {
        return Optional<String>.class; // Compiler don't let me do this.
    }
}

На линии return Optional<String>.class;Я получил синтаксическую ошибку. Как я могу правильно вернуть объект типа Class<Optional<String>> в этом случае? Я старался

    @Override
    public Class<Optional<String>> getExtractedType() {
        return Optional.of("").getClass();
    }

Но не сработало, я получил ошибку Type mismatch: cannot convert from Class<capture#1-of ? extends Optional> to Class<Optional<String>>

1 ответ

Решение

Просто верните Optional.class. Аргумент типа <String> в любом случае не выживет. Вы никогда не сможете получить эту часть во время выполнения.

Другие вопросы по тегам