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中的这种变化。