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

时间:2015-12-10 13:56:17

标签: java class reflection ninjaframework

我正在尝试创建自定义ArgumentExtractor in 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 个答案:

答案 0 :(得分:1)

只需返回Optional.class。无论如何,类型参数<String>都无法在擦除中存活。你永远不能在运行时获得那部分。