I just noticed that implicit def
doesn\'t seem to work in var args.
For example, I have a java function that takes java.lang.Byte...
as its pa
An implicit conversion with a varargs parameter does not make much sense, since you use a varargs parameter so you don't need to explicitly create a collection when you call the function, but with a implicit conversion function, the function is called for you automatically.
You can define a implicit conversion from a Seq[Byte]
to a Seq[java.lang.Byte]
(like in your second example) and still use the varargs notation in test
and test2
(like in your first example).
implicit def convert(bytes: Seq[Byte]): Seq[java.lang.Byte] =
bytes.map(b => b : java.lang.Byte)
def test(data: Byte*) = test2(data: _*)
def test2(data: java.lang.Byte*) = data.length
Which can be used as :
scala> test(1.toByte, 2.toByte)
res2: Int = 2
scala> test(1.toByte, 2.toByte, 3.toByte)
res3: Int = 3