Java默认访问级别(包私有访问)。为什么用它?

时间:2015-02-09 16:44:55

标签: java access-modifiers

虽然我知道默认(包)访问级别如何在java中工作,但我无法想象它在应用程序中的实际用途,除了具有唯一包的那些。您在业务(通常是多包)Java应用程序中使用什么默认访问级别?

3 个答案:

答案 0 :(得分:2)

当客户端代码不需要知道实现接口的正确类并通过工厂方法或构建器初始化它时,我会使用它们,因为类本身可能非常复杂。

E.g。

接口

package foo.bar;

public interface FooBarInterface {
}

接口的实现

package foo.bar;

class FooImpl implements FooBarInterface {
}

package foo.bar;

class BarImpl implements FooBarInterface {
}

工厂方法:

package foo.bar;

public class FooBarInterfaceCreator {
    public static FooBarInterface create(String param) {
        //creates instance based on parameters...
    }
}

答案 1 :(得分:2)

使用包私有类的一种非常常见的模式是创建接口的共享共享实现或公共类的共享子类。

请注意,共享这一事实非常重要,因为内部类为隐藏调用者的类/接口实现提供了更好的选择。

当您希望在不同类之间“水平”共享一组算法时,另一个常见用途是“实用程序类”,而不会将这些算法暴露给类库的外部用户。各种论证检查器属于这一类。

答案 2 :(得分:1)

大多数情况下,我已将该访问权用于单元测试。在这种情况下,我要更改一些私有方法,以便为它们提供包访问权限,以便对它们进行测试。当然,您的单元测试应遵循与实际代码相同的包结构。