2016-04-29 3 views
0

私はスカラーで実行時にパラメータの型情報を必要とする単純なメソッドを持っていますので、私はClassTagを使用していますが、私のメソッドはJavaと相互運用可能にします。しかし、ClassTagはJavaに優しいものではありません。それで、Javaで動作させるための回避策はありますか?scala:スカラメソッドのClassTagの代替

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

このメソッドの中で何をしたいのかをもう少し伝える必要があります。配列を作成しますか?あなたが本当にしている場合は、

def myMethod[T](x: T): Unit = { 
    implicit val classTag = ClassTag[T](x.getClass) 
} 

を使用することができますが、xがnullで、xはプリミティブ型である場合はボクシングの原因となります場合はもちろん、それは失敗します。

+0

更新された質問を参照してください –