Scala:" No Type Args"类型约束

时间:2015-12-31 22:48:47

标签: java scala type-constraints

假设我有一个Java类:

public class Foo {
    public static <T> T doSomething(Class<T>) { ... }
    public static <T> T doSomething(TypeToken<T>) { ... }
}

现在我希望&#34; Scalafy&#34;它。也就是说,创建类似的东西:

object Bar {
    def doSomething[T]: T
}

显然,这不会编译:

def doSomething[T] = Foo.doSomething(classOf[T])

做这样的事情要求我将T限制为没有类型参数的类型:

def doSomething[T: ClassTag] = Foo.doSomething(classTag[T].runtimeClass.asInstanceOf[Class[T]])

现在,当然,您始终可以通过TypeToken方法汇集所有内容,但假设Class方法很便宜且TypeToken方法很昂贵。我想问的问题是,是否存在某种用户定义的类型约束,类似于=:=<:<,我可以隐式传递以确保T没有类型参数(更具体地说,classTag[T].runtimeClassClass[T]而不是Class[_ >: T]}?

0 个答案:

没有答案