如何在 java 中获得类似 `MyClass<String>.class` 的内容

How to get something like `MyClass<String>.class` in java

我正在尝试创建一个自定义 ArgumentExtractor in Ninjaframework,我必须在其中创建一个 class 来实现 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; 行,我遇到语法错误。在这种情况下,我如何正确 return 类型 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>>

只是 return Optional.class。无论如何,类型参数 <String> 都不会在擦除后继续存在。您永远无法在运行时获得该部分。