Scala方法,其中第二个参数的类型等于第一个参数的泛型类型的一部分

时间:2010-06-18 10:04:08

标签: generics scala scala-2.8

我想在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)

1 个答案:

答案 0 :(得分:9)

我的头脑中(我还在开始使用Scala):

def genericFind[T](attribute:SingularAttribute[Person, T], value:T) {
  ...
}