是否可以在对象创建范围内访问私有(private)静态方法?像下面的代码片段一样。
class A {
private static void func(int x) {
/*Some Code here*/
}
}
并从另一个上下文调用,如下所示:
new A(){{
func(2);
}};
这里的目的是促进对 func(int)
添加更多调用,每次调用使用不同的参数,或者为 A
类型的对象放置更简单的某种构建器。
类似这样的事情:
new A() { {
func(2);
}
{
func(3);
}
// ...
};
这可以实现吗?
最佳答案
我认为你可以通过实际编写一些简单的代码并亲自尝试一下来轻松找到答案。
据我了解(尚未尝试)这是不可能的。
我想你必须明白什么意思:
new A() { { func(2); } }
这是匿名内部类,就像编写类似的内容
class A_anonymous extends A {
{
func(2);
}
}
然后做一个
new A_anonymous();
进一步查看类定义,它实际上翻译为
class A_anonymous extends A {
public A_anonymous() {
func(2);
}
}
所以答案是显而易见的。如果 func() 是 A 中的私有(private)方法,那么你当然不能这样使用它。
解决的方法很简单,就是让方法的可见性受到保护(或更高)。
关于Java : Is it possible to access private static method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15082339/