2017-01-06 5 views
0

マップから値を抽出するコードがあります。 :タイプとクラスのタグを持っていても、 "抽象タイプTのタイプパターン...イライラで消去されているためチェックが外されています"

type CsvRow = Map[String, Any] 

と抽出クラス:

class CsvExtractor(row: CsvRow) extends Extractor { 
    def get[T: TypeTag: ClassTag](k: String): T = getOption[T](k).get 

    def getOption[T: TypeTag: ClassTag](k: String): Option[T] = { 
    row(k) match { 
     case v: Some[T] => v 
     case None  => None 
    } 
    } 
} 

コンパイラは私にこの警告与える:

[warn] /Users/axue/workspace/events/schema-kontrol/src/main/scala/com/lumoslabs/schemakontrol/core/extractor/CsvExtractor.scala:12: abstract type T in type pattern Some[T] is unchecked since it is eliminated by erasure 
[warn]  case v: Some[T] => v 
[warn]    ^

をしかしべきClassTagとTypeTagはその型情報が存在することを保証していませんか?

答えて

0

これは、これを汎化クラス定義に入れているためです。次のように変更してください:

case Some(v: T) => v 
関連する問題