代码之家  ›  专栏  ›  技术社区  ›  Basit Anwer

提供其他包对“无修饰符”方法的可访问性

  •  0
  • Basit Anwer  · 技术社区  · 14 年前

    有一个名为

    public Class Foo{
    
       public something(){
       ...}
    
       Foo(){
       ...}
    }
    

    3 回复  |  直到 14 年前
        1
  •  4
  •   Kevin Day    14 年前

    我认为你正在寻找的东西相当于C++的朋友操作符。Java没有这个功能(理由很充分)。

    根据这有多糟,您可以将公共构造函数标记为已弃用,并切换到仅用于包的工厂方法。然后在另两个版本中将构造函数改为package private

    长短:一旦你向公众发布了一个API,你要么支持它,要么破坏它们的构建。

        2
  •  1
  •   Landei    14 年前

    您可以做的一件事是保持构造函数是公共的,但是将其注释为@Deprecated,并注释它不应该在包之外使用。

    除了只有一个艰难的解决方案,那就是移除公众,让它崩溃,所以其他人需要修复他们的代码。你不会用这个动作结交新朋友,但一旦妖怪出局,就很难再回到瓶子里。现在比以后更好——想想像Integer(int)这样的原始包装的公共构造函数,Sun在那里得到的结果是非常错误的,并且以后不能收回它。

        3
  •  0
  •   Nikita Rybak    14 年前