我在scala中有一个简单的方法,它需要运行时参数的类型信息,因此我使用ClassTag
,但我希望我的方法可以与java互操作。但是ClassTag
不是java友好的。那么有一种解决方法可以使它与Java一起使用吗?
我希望getElement
方法可以与java互操作。
def getElements: Array[SomeType] = ...
def getElement[T <: SomeType : ClassTag](i: Int): T = {
getElements(i) match {
case element: T => element
case element => throw new IllegalArgumentException()
}
}
答案 0 :(得分:0)
您必须详细了解您希望在方法中执行的操作。创建数组?如果你真的需要,你可以使用
def myMethod[T](x: T): Unit = {
implicit val classTag = ClassTag[T](x.getClass)
}
但当然如果x为null则会失败,如果x是基本类型,则会导致装箱。