gpt4 book ai didi

scala - Scala中的匿名子类

转载 作者:行者123 更新时间:2023-12-04 15:53:18 24 4
gpt4 key购买 nike

我试图理解 Scala 中的匿名子类。我写了下面的代码:

package com.sudipta.practice.chapter8

class Person(val name: String) {
def printMyName = println("Name: " + name)
}

class AnonymousSubclass(val name: String) {
val anonymousSubclass = new Person(name){
def sayHello = "Hello, " + name
def sayBye = "Bye, " + name
override def printMyName = println("My name is: " + name)
}

}

object testPerson extends App {

def printAnonDetails (myObject: AnonymousSubclass) = {
myObject.anonymousSubclass.printMyName
}

val personObject = new Person("Sudipta")
personObject.printMyName

val anonObject = new AnonymousSubclass("Sudipta")

printAnonDetails(anonObject)
}

但是我无法理解 Scala 中匿名子类的用途/优势是什么。如果您有任何意见,请在这里分享。谢谢。

各位,
苏迪普塔

最佳答案

Scala 中匿名子类的使用与 anonymous subclasses in Java 的使用没有区别。 . Java 中最常用的可能是 observer pattern如第一个链接所示。

该示例直接转换为 Scala:

button.addActionListener(new ActionListener() {
def actionPerformed(e: ActionEvent) {
// do something.
}
});

但是,在 Scala 中,您可能更愿意为此使用匿名函数(如果库允许您这样做):
button.addActionListener(e => /* do something */)

在 Scala 中,在这种情况下,您可能会使用匿名子类,如果:
  • 您的客户要求您扩展给定接口(interface)
  • 您一次注册多个事件(例如 java.awt.MouseListener )

  • 这些当然只是例子。在任何不命名类对您有意义的地方,您都可以使用匿名(子)类。

    关于scala - Scala中的匿名子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18813503/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com