Я действительно удивлен, что подобный актерский состав вообще работает.Это не должно быть: Array
и IP
- это два совершенно разных типа, вы не должны быть в состоянии превращать одно в другое.Кроме того, Array
также является окончательным, и вы не можете подкласс его.
Я попытался поиграться с этой «функцией» и заметил, что добавление к ней чего-либо более сложного (например, добавление типа self, такого как один из предложенных здесь ответов) приводит к сбою компилятора (2.11) ...
Кроме того, приведение вообще плохо, потому что оно обходит проверки типов во время компиляции.
Не делай этого.Вместо этого просто создайте класс-оболочку:
case class IPAddress(bytes: Array[Byte]) {
override def equals(other: Any) = other match {
case IPAddress(b) => b.sameElements(bytes)
case _ => false
}
}
Еще лучше, забудьте также обертку и просто используйте InetAddress
вместо IP
.Вы всегда можете получить от него байты, используя .getAddress
по требованию.