Java:是否可以访问私有静态方法

时间:2013-02-26 05:55:30

标签: java builder

是否可以在对象创建范围内访问私有静态方法?类似下面的片段。

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);
}
// ...
};

这有可能实现吗?

2 个答案:

答案 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();
    }
}