首页 > 解决方案 > 案例类构造函数参数是否默认为公共 val 字段?

问题描述

参考Scala官方文档: case-classes.html
“案例类构造函数参数默认为公共val字段”

但是,.scala 的反编译

case class A(i: Int)

显示下面的 Java 代码

private final int i; // private, not public
public int i(){ return i; }

case-classes.html 中的语句是否意味着:
“默认情况下,案例类构造函数参数是私有 val字段。”
但是,自动生成的 getter 会将其公开。

标签: scalacase-class

解决方案


是的,从语言的角度来看,构造函数参数case classes是 public 。val但是 aval是不可变的,因此它必须在类中实现为私有值,具有公共 getter 但没有 setter。


推荐阅读