无法在Scala case类中定义名为“wait”的属性
我试图在无法在Scala case类中定义名为“wait”的属性,scala,Scala,我试图在案例类中定义属性wait,但是,它不断给我一个错误: 重写()单元类型的类对象中的方法wait [错误]值等待无法覆盖最终成员 [错误]最终案例类Foo(等待:Bar) 看起来wait是基类中的一个方法,尽管我的case类没有继承任何东西。有没有办法定义一个名为wait的类变量 您的类隐式继承自AnyRef/对象,因为每个引用类型都需要是AnyRef的子类型。您可以通过定义Foo extends AnyVal来避免这种情况,但您确实不想这样做,除非您知道,因为您的类不再是普通类。只需将您
案例
类
中定义属性wait
,但是,它不断给我一个错误:
重写()单元类型的类对象中的方法wait[错误]值等待无法覆盖最终成员
[错误]最终案例类Foo(等待:Bar)
看起来
wait
是基类中的一个方法,尽管我的case类没有继承任何东西。有没有办法定义一个名为wait
的类变量 您的类隐式继承自AnyRef
/对象,因为每个引用类型都需要是AnyRef
的子类型。您可以通过定义Foo extends AnyVal
来避免这种情况,但您确实不想这样做,除非您知道,因为您的类不再是普通类。只需将您的方法命名为其他方法
wait
是一个并发原语。它位于AnyRef
中,仅仅是因为Java决定将它放在Object
中(也就是说,应该归咎于Java,而不是Scala)。在synchronized
块内调用时,调用线程将进入睡眠状态,直到被在同一对象上调用notify
(All
)的其他线程唤醒。否,当公共字段名与的方法相同时,Scala编译器无法处理此问题:
- 通知
- 通知所有
- 等等
因为当Scala编译器满足公共字段时,它将生成默认的getter,例如,它将生成:
public java.lang.String wait()
这将导致的等待方法出现名称冲突问题。但现在看来,编译器无法处理此问题
public java.lang.String wait()