スカラでは、クラス型をジェネリック型として渡すか、明示的に渡すのが一般的ですか?スカラ関数の引数:クラスvs関数ジェネリック型。
たとえば、ソース例外、ターゲット例外、および3番目のパラメータを取り込むJavaオブジェクトを作成するためのヘルパー関数を作成しました(この例ではStringを使用します)。私はスタイルだけの問題だと思う
exceptionTranslation(classOf[FooException], classOf[BarException], "blah")
def exceptionTranslation(sourceClazz: Class[_ <: Throwable], targetClazz: Class[_ <: Throwable], message: String) = new Translation()
.withSource(sourceClazz)
.withTarget(targetClazz)
.withMessage(message)
それとも
exceptionTranslation[FooException, BarException]("blah")
def exceptionTranslation[Source <: Throwable, Target <: Throwable](message: String)(
implicit source: ClassTag[Source], target: ClassTag[Target]) = new Translation()
.withSource(source.runtimeClass.asInstanceOf[Class[Source]])
.withTarget(target.runtimeClass.asInstanceOf[Class[Target]])
.withMessage(message)
は、私はあなたがどんな暗黙とランタイムキャストは必要ありませんが、それはだとして最初のものは、より良い好き好みの問題。 –
@Tuvalで同意すると、2番目のものは絶対に過剰です – Chirlo