Java 在这种情况下,如何在接口中使用泛型?

Java 在这种情况下,如何在接口中使用泛型?,java,Java,我设计了一些APIs,它们采用了许多参数。我想检查参数,所以我设计了一个名为Validator的接口 public interface Validator<T> { boolean validat(); default T from(Map<String, String> params) { return JSON.parseObject(JSON.toJSONString(params), T); // can't compile

我设计了一些
API
s,它们采用了许多参数。我想检查参数,所以我设计了一个名为
Validator
接口

public interface Validator<T> {
    boolean validat();
    default T from(Map<String, String> params) {
        return JSON.parseObject(JSON.toJSONString(params), T);  // can't compile
    };
}
公共接口验证程序{
布尔验证();
默认T from(映射参数){
返回JSON.parseObject(JSON.toJSONString(params),T);//无法编译
};
}

返回方法无效。如何更正它?

T
是一种类型,而不是
TypeReference
,因为您需要
JSON。parseObject
接口不应该有任何方法实现

您正在使用哪个库

我假设方法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
    };
}
公共接口验证程序{
布尔验证();
默认T from(映射参数,类destClass){
返回JSON.parseObject(JSON.toJSONString(params),destClass);//编译
};
}

可能不太好。我从
中删除
。没有理由这么说,从Java8开始允许使用默认方法。感谢您更正JF。我没有意识到Java8中的这种变化。