Как получить что-то вроде `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>
в любом случае не выживет. Вы никогда не сможете получить эту часть во время выполнения.