2016-06-20 3 views
-3

Я разработал несколько API s, и они взяли много параметров. Я хочу проверить параметры, поэтому я разработал Interface под названием Validator.Как использовать общий интерфейс в этом случае?

public interface Validator<T> { 
    boolean validat(); 
    default T from(Map<String, String> params) { 
     return JSON.parseObject(JSON.toJSONString(params), T); // can't compile 
    }; 
} 

Метод возврата недействителен. Как я могу это исправить?

ответ

1

T - это тип, а не TypeReference, как вам нужно для JSON.parseObject.

+0

Может быть, это не очень хорошо. Я удаляю 'from'. нет причин поместить его здесь – blackdog

-1

Интерфейс не должен иметь реализации какого-либо метода.

+0

Стандартные методы разрешены начиная с Java 8. –

+0

Спасибо за исправление JF. Я не знал об этом изменении в Java 8. –

0

Какой библиотеки вы используете?

Я полагаю, что второй параметр метода parseObject - это «Класс объекта», который должен быть возвращен вызовом метода. Если это так, вам нужно передать ссылку на класс методу.

Попробуйте

public interface Validator<T> { 
    boolean validat(); 
    default T from(Map<String, String> params, Class<T> destClass) { 
     return JSON.parseObject(JSON.toJSONString(params), destClass); // this compiles 
    }; 
} 
Смежные вопросы