下面的代码示例表明您可以使用属性表示法调用私有方法,例如val
代替getVal()
,大概是val = "something"
代替setVal("something")
class Foo {
String foo = val
private getVal() { "val"}
}
assert new Foo().foo == "val"
我知道这种风格对于公共方法是“官方支持的”,但它是私有方法的用途,一个人应该依赖的bug / quirk(非常类似于从类外部访问私有成员的能力) ?
答案 0 :(得分:0)
我可能得到了错误的结局,但在Java中却没有发生同样的事情......
看不出与以下有何不同:
class PrivateTest {
public String foo = getVal() ;
private String getVal() {
return "val" ;
}
}
然后是测试类:
public class PrivateMain {
public static void main( String[] args ) {
PrivateTest pt = new PrivateTest() ;
System.out.println( pt.foo ) ;
}
}
测试类仍将打印出val
答案 1 :(得分:0)
现在你提到它了...... 我不记得如何处理私人成员。
但至少在我运行的1.8实例中(没有安全管理器),你可以做一些事情,比如
println new Date().fastTime
println new Date().normalize()
- 编辑
我应该多加注意
在你的例子中,新的Foo()。foo只是访问标准的groovy属性
另一方面,new Foo().val
或new Foo().getVal()
实际上会访问私人会员。
- 编辑2
哇。我真的不记得了GROOVY-3010