我想在Scala中创建一个特定的泛型方法。它需要两个参数。第一种是通用Java接口的类型(它来自JPA条件查询)。它目前看起来像这样:
def genericFind(attribute:SingularAttribute[Person, _], value:Object) {
...
}
// The Java Interface which is the type of the first parameter in my find-method:
public interface SingularAttribute<X, T> extends Attribute<X, T>, Bindable<T>
现在我想实现以下目标: value 目前的类型为java.lang.Object。但我想让它更具体。值必须与第一个参数中的占位符“_”具有相同的类型(因此代表Java接口中的“T”)。
这有可能吗,怎么样?
BTW抱歉这个愚蠢的问题标题(任何建议?)
修改 添加了一个可以使问题更加清晰的附加示例:
// A practical example how the Scala method could be called
// Java class:
public class Person_ {
public static volatile SingularAttribute<Person, Long> id;
}
// Calling the method from Scala:
genericFind(Person_.id, Long)
答案 0 :(得分:9)
我的头脑中(我还在开始使用Scala):
def genericFind[T](attribute:SingularAttribute[Person, T], value:T) {
...
}