Groovy 使用属性表示法调用私有方法
下面的代码示例表明,您可以使用属性表示法调用私有方法,例如Groovy 使用属性表示法调用私有方法,groovy,Groovy,下面的代码示例表明,您可以使用属性表示法调用私有方法,例如val而不是getVal(),也可能val=“something”而不是setVal(“something”) 我知道这种风格对公共方法是“官方支持”的,但它对私有方法的使用是否是一个bug/怪癖,应该依赖于它(很像从类外部访问私有成员的能力)?我可能理解错了,但在Java中不是也会发生同样的事情 看不出这与拥有: class PrivateTest { public String foo = getVal() ; privat
val
而不是getVal()
,也可能val=“something”
而不是setVal(“something”)
我知道这种风格对公共方法是“官方支持”的,但它对私有方法的使用是否是一个bug/怪癖,应该依赖于它(很像从类外部访问私有成员的能力)?我可能理解错了,但在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.8实例中(没有安全管理器),您可以执行以下操作
println new Date().fastTime
println new Date().normalize()
--编辑我真的应该多加注意
在您的示例中,new Foo().Foo只是访问一个标准groovy属性。
另一方面,
newfoo().val
或newfoo().getVal()
将实际访问私有成员
--编辑2哇!我真的不记得了我的观点是,在类内部,您可以仅使用
X
调用私有方法getX()
,但我只读过的文档/书籍提到对公共方法使用此属性语法。我想知道的是,在私有方法中也使用它是否合适?仅仅因为它可以工作,并不一定意味着它可以。@groovy现在甚至有私有的概念吗?我认为它会尝试调用getX
,如果它存在的话,不管它的访问级别是什么Groovy肯定有私有的概念,但是当前的实现是有缺陷的
println new Date().fastTime
println new Date().normalize()