是否可以在对象创建范围内访问私有静态方法?类似下面的片段。
class A {
private static void func(int x) {
/*Some Code here*/
}
}
并从另一个上下文调用,如下所示:
new A(){{
func(2);
}};
这里的目的是为了增加对func(int)
的调用,为每个调用添加一个不同的参数,或者为A
类型的对象添加更简单的某种构建器。 / p>
这样的事情:
new A() { {
func(2);
}
{
func(3);
}
// ...
};
这有可能实现吗?
答案 0 :(得分:1)
我认为通过实际编写一些简单的代码并自己试一试,您可以轻松找到答案。
根据我的理解(未尝试过),这是不可能的。
我认为你必须明白这是什么意思:
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中的私有方法,那么你当然不能这样使用它。
解决方法只是使方法的可见性受到保护(或更高)。
答案 1 :(得分:0)
是否可以在对象创建范围内访问私有静态方法?
是
在构造函数中,您可以调用静态方法。
class AClass
{
private void static aMethod1()
{
}
private void static aMethod2()
{
}
public AClass()
{
aMethod1();
aMethod2();
}
}