【发布时间】:2011-08-25 13:18:25
【问题描述】:
我知道计划对案例类进行一些更改,例如禁止它们之间的继承:
scala> case class Foo()
defined class Foo
scala> case class Bar() extends Foo()
<console>:9: warning: case class `class Bar' has case ancestor `class Foo'. Case-to-case inheritance has potentially dangerous bugs which are unlikely to be fixed. You are strongly encouraged to instead use extractors to pattern match on non-leaf nodes.
case class Bar() extends Foo()
^
defined class Bar
或没有参数列表的案例类(不确定):
scala> case class Foo
<console>:1: warning: case classes without a parameter list have been deprecated;
use either case objects or case classes with `()' as parameter list.
case class Foo
^
<console>:7: warning: case classes without a parameter list have been deprecated;
use either case objects or case classes with `()' as parameter list.
case class Foo
^
defined class Foo
目前@deprecated 还有什么?
【问题讨论】:
-
没有参数列表的案例类“臭”的原因是因为它们没有从一个实例到另一个实例不同的状态,因为它们没有字段(至少没有通过构造函数设置参数,这是它应该完成的唯一方法......),所以它们应该是真正的案例对象,因为单个实例可以代表所有可能的“状态”。
-
@Dean Wampler:带有空参数列表
()的案例类有何不同? -
案例类之间的继承为什么臭?
标签: class scala inheritance case deprecated