![]() |
1
0
编译case类时,编译器会为主类及其伴生对象创建类文件。对于在方法中定义的case类,它也是这样做的。唯一的区别是,类文件的创建文件名使其无法访问。它有点类似于匿名类文件名。 例如:
编译上述代码后,编译器可能会生成名为 TestClass$anon$1 .如果您知道这个名称,可以使用反射创建这个匿名内部类的实例。 请参考下面的示例代码,其中包含在方法中定义的case类。
我发现在编译代码之后,编译器确实为case类创建了名为 TestClass$ClassInsideMethod$2 和 TestClass$ClassInsideMethod$3$ 类文件附加了一个数字。根据编译器的不同,此命名也会有所不同。在我的例子中,使用反射,我能够创建在方法中定义的case类的实例。 太长,读不下去了编译器确实为case类创建了伴生对象。 我希望这能回答你的问题。 |
![]() |
Wickoo · Scala变量解析:类与局部变量 3 月前 |
![]() |
Jake · 如何回滚臭鼬事务以进行集成测试?(缺少隐式原点) 5 月前 |
![]() |
Readren · 如何定义标量。标量3中元组的ValueOf? 1 年前 |
![]() |
Leif Andersen · “=>”在scala泛型中是什么意思? 1 年前 |