我知道我们可以在Java中创建包私有类。因此,该类是Internal,并且只能在指定的模块中访问:

class MyPackagePrivateClass
{
    ...
}

现在,我正在开发一个名为LibraryA的android库,并希望在自己的LibraryB中使用现有的LibraryA。如何防止LibraryA用户直接使用LibraryB

是否有类似包私有库的概念或类似概念?

更新(对于那些问“我为什么需要这个?”的人)

LibraryB中,有这样的方法:
public QueryBuilder select(String... columns);

但我强烈认为,我们应该使用Type-Safe Enum pattern并防止用户将字符串传递给这些方法(考虑到维护和重构问题)。因此,我决定将这些方法包装在LibraryA中:
public TypedQueryBuilder select(Column... columns) {
        queryBuilder = queryBuilder.select(toString(columns));
        return this;
    }

因此,我的库的用户应使用我提供的Typed方法(此处的Column是类型安全的枚举)。但是,如果他们可以使用原始方法,则可以改用那些方法,我倾向于禁止这样做。

最佳答案

在Java中,通过多态性,您无法隐藏扩展类的公共方法。

我认为您可以使用Facade Pattern归档目标:隐藏所有复杂的逻辑,在这种情况下,控制访问,并在需要时实现一些接口。

07-24 09:16