Scala如何使用扩展与匿名类
发布时间:2020-12-16 08:55:37 所属栏目:安全 来源:网络整理
导读:有没有办法从 Scala中的Anonymous类扩展另一个类?我的意思是 abstract class Salutation { def saybye(): String = "Bye"}class anotherClass() { def dummyFunction() = { val hello = new { def sayhello(): String = "hello" } extends Salutation val h
有没有办法从
Scala中的Anonymous类扩展另一个类?我的意思是
abstract class Salutation { def saybye(): String = "Bye" } class anotherClass() { def dummyFunction() = { val hello = new { def sayhello(): String = "hello" } extends Salutation val hi = hello.sayhello //hi value is "Hello" val bye = hello.saybye //bye value is "bye" } } 解决方法
是的,它看起来和Java一样:
abstract class Salutation { def saybye: String = "Bye" } val hello = new Salutation { def sayhello: String = "hello" } val hi = hello.sayhello val bye = hello.saybye 如果Salutation是具有相同签名的sayhello方法的抽象类或特征,那么您将提供一个实现;否则你将创建一个匿名结构类型的实例: hello: Salutation{def sayhello: String} 请注意,对sayhello方法的调用涉及反射(因为结构类型在Scala中的实现方式),因此如果您大量使用此方法,则应该定义新的特征或类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |