2015-12-10 3 views
1

Я пытаюсь создать пользовательский ArgumentExtractor in Ninjaframework, в котором я должен создать класс, который реализует ninja.params.ArgumentExtractor<T>, который имеет метод public Class<T> getExtractedType()Как получить что-то вроде `MyCLASS <String> .class` в Java

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>>

+3

Можете ли вы просто бросить его и подавить предупреждение? 'return (Класс <Необязательный >) Необязательный.of (" "). getClass();' – Mena

ответ

1

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