为什么我不能从Scala访问实现Java接口的类中声明的变量?

时间:2012-11-12 15:09:13

标签: java scala interface scope

在Java中,我有一个实现接口的类:

AlertDialog implements DialogInterface

如果在界面内声明了一些变量,我可以访问它们:

AlertDialog.BUTTON_POSITIVE

但是在Scala中,上面的行没有编译。好像它是隐藏的。有没有办法在Scala中访问这些变量而不创建新对象或做任何其他hacky?

2 个答案:

答案 0 :(得分:14)

稍微详细一点:无法接受的原因是George正在讨论界面上定义的静态成员。 Scala没有静态成员 - 而是创建一个object,这是一个具有单个实现的常规类。当您从Java接口扩展时,Scala将仅扩展非静态成员,因为静态成员被视为在同伴object中。伴随对象的名称与界面相同,因此您可以将其作为DialogInterface.BUTTON_POSITIVE

进行访问

答案 1 :(得分:2)

Scala无法从AlertDialog类访问这些变量,但您可以使用接口本身作为对象来访问它们。

所以你可以直接从界面访问变量:

DialogInterface.BUTTON_POSITIVE
相关问题