在Java中,我有一个实现接口的类:
AlertDialog implements DialogInterface
如果在界面内声明了一些变量,我可以访问它们:
AlertDialog.BUTTON_POSITIVE
但是在Scala中,上面的行没有编译。好像它是隐藏的。有没有办法在Scala中访问这些变量而不创建新对象或做任何其他hacky?
答案 0 :(得分:14)
稍微详细一点:无法接受的原因是George正在讨论界面上定义的静态成员。 Scala没有静态成员 - 而是创建一个object
,这是一个具有单个实现的常规类。当您从Java接口扩展时,Scala将仅扩展非静态成员,因为静态成员被视为在同伴object
中。伴随对象的名称与界面相同,因此您可以将其作为DialogInterface.BUTTON_POSITIVE
。
答案 1 :(得分:2)
Scala无法从AlertDialog
类访问这些变量,但您可以使用接口本身作为对象来访问它们。
所以你可以直接从界面访问变量:
DialogInterface.BUTTON_POSITIVE