1

我正在尝试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>>

4

1 回答 1

1

只需返回 Optional.class。无论如何,类型参数<String>都不会被擦除。您永远无法在运行时获得该部分。

于 2015-12-10T14:16:51.687 回答