Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何指定方法AnyObject<;?超级T,字符串>;_Java_Generics_Jpa - Fatal编程技术网

Java 如何指定方法AnyObject<;?超级T,字符串>;

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属性,字符串值) 定义了用于方法签名的泛

我想在接口中指定一个方法实现的方法(基于JPA 2)的签名是:

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");