作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定的
case class Fruit(name: String, colour: String)
colour
.
@deprecated
来实现前者。
case class Fruit(name: String, @deprecated("message", "since") colour: String)
@Deprecated
注解
case class Fruit(
name: String,
/* @Deprecated with some message here */
@(Deprecated @field)
colour: String
)
colour
在任何情况下都已弃用,我无法找到任何相关资源。
getter
为
colour
并弃用后者,但我想知道弃用 case 类字段是否实际上是不可能的,以及 - 最终 - 原因。
colour
是case类的必填字段,所以设置这个属性为
deprecated
的意义是有争议的。我想弃用
colour
,因为我现在提供
colour
来自另一个构造的信息,我想让用户知道
colour
不是获取该信息的正确实例,我将从
Fruit
中删除它在下一个版本中。
colour
来自 Fruit 属性的信息,暂时,我真的不在乎他们是否可以创建带有颜色信息的水果实例。
val fruit = Fruit("peer", "green")
val colour = fruit.
colour
最佳答案
这是一个奇怪的用例。如果不推荐使用必填字段,那么当然也必须不推荐使用类本身吗?也就是说,假设您正在尝试做的事情是可能的,那么在没有收到弃用警告的情况下根本不可能使用该类。 (这可能解释了为什么这是不可能的。)
也就是说,正如您所指出的,有多种方法可以实现您的目标。这是其中之一:
case class Fruit(name: String) {
@deprecated("message", "since")
val colour: String = "some default value"
}
object Fruit {
// Deprecated factory method.
@deprecated("message", "since")
def apply(name: String, colour: String): Fruit = Fruit(name)
}
colour
不再需要作为
Fruit
的属性. (如果需要,则不应弃用。)它的工作原理是弃用创建
Fruit
的工厂方法。使用
colour
值(value)。
关于scala - 实际上可以弃用 Scala 案例类字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49385374/
我是一名优秀的程序员,十分优秀!