Java 如何指定方法AnyObject<;?超级T,字符串>;
我想在接口中指定一个方法实现的方法(基于JPA 2)的签名是:Java 如何指定方法AnyObject<;?超级T,字符串>;,java,generics,jpa,Java,Generics,Jpa,我想在接口中指定一个方法实现的方法(基于JPA 2)的签名是: List getByStringValue(SingularAttribute尝试以下操作 <R, T extends R> List<T> getByStringValue(SingularAttribute<R, String> attribute, String value) 列出getByStringValue(SingularAttribute属性,字符串值) 定义了用于方法签名的泛
List getByStringValue(SingularAttribute尝试以下操作
<R, T extends R> List<T> getByStringValue(SingularAttribute<R, String> attribute, String value)
列出getByStringValue(SingularAttribute属性,字符串值)
定义了用于方法签名的泛型参数。Java不允许非泛型参数部分本身是某种通配符,例如具有某些泛型参数的任何类:
<T> void method(*<T, String> o) // can't do this
看看Spring的。你正在重新发明一个轮子。谢谢,但是这部分已经完成了,而且非常简单(有基于jpa 2的实现吗?)。但是我需要一种通用的方法来查询条件。它可以做到这一点。你只需在findByNameAndAge(字符串名,整数年龄)这样的接口中声明一个方法;
剩下的部分由spring来完成!我需要使用纯java ee 7,但我需要替换“SingularAttribute”。我希望该方法能够接受任何带有
<T> void method(*<T, String> o) // can't do this
interface StringGetter<T> {
T getByStringValue(String value);
}
public class WidgetStringGetter implements StringGetter<Widget> {
public Widget getByStringValue(String value) {
// whatever
}
}
public static <T> T factory(StringGetter<T> getter, String value) {
return getter.getByStringValue(value);
}
Widget w = factory(new WidgetStringGetter(), "foo");