Я использую библиотеку, которая имеет класс Product
какпереопределить метод библиотеки с помощью Scala неявной
class Product {
def toString() = "Whatever"
}
Я хочу, чтобы переопределить этот метод toString
. Таким образом, существует два решения.
1 - Скопируйте содержимое этого класса и создайте тот же новый класс в своем собственном проекте и сделайте все с помощью этого метода.
2 - ИспользованиеScala Impilicit
первый подход очень убого. Поэтому я попробовал второй, но столкнулся с проблемой. Мне удалось добавить новый метод в этот класс, но не удалось переопределить существующий. Позвольте мне объяснить это, например:
class NewProduct(val p: Product) {
override def toString() = "an-other whatever"
}
implicit def customToString(p: Product) = new NewProduct(p)
Теперь, если я печатаю на этом пути println((new Product()).toString)
Он печатает whatever
, но я ожидал an-other whatever
Кажется, что это не перекрывая этот метод, потому что если я добавить новый метод, то это работает, как ожидалось
class NewProduct(val p: Product) {
def NewtoString() = "an-other whatever"
}
implicit def customToString(p: Product) = new NewProduct(p)
Теперь, если я печатаю на этом пути println((new Product()).NewtoString)
Он печатает an-other whatever
его средний новый метод NewtoString
добавляется к этому классу.
Что мне не хватает? Можно ли переопределить методы, использующие неявные в Scala ??
, так что я могу сделать в этой ситуации? У меня есть Jar, содержащий этот класс, теперь, что я могу сделать, чтобы переопределить этот метод? –
Наследование - ключевое слово. – volia17
не может написать код здесь, отредактировал мой ответ –