使java类仅在项目/应用程序工作区内可见
我正在用java开发一个SDK,我的问题是隐藏某些java类/包,这样使用该SDK的第三方应用程序就不会暴露于这些底层类的 我知道,如果sdk中的所有类对象都在一个包中,我可以为要隐藏的类分配默认/受保护的访问修饰符。然而,像许多java项目一样,像MySDK这样的java项目由不同的包组成,这些包对relivant java类的包进行了适当的分组 这意味着,如果我想隐藏/保护com.a.b.c中的一个类,那么在com.a中对世界可见的主根类将无法访问com.a.b.c等中受保护的类 我怎样才能提供一个解决方案,而不是仅仅在一个大的包中转储所有类使java类仅在项目/应用程序工作区内可见,java,Java,我正在用java开发一个SDK,我的问题是隐藏某些java类/包,这样使用该SDK的第三方应用程序就不会暴露于这些底层类的 我知道,如果sdk中的所有类对象都在一个包中,我可以为要隐藏的类分配默认/受保护的访问修饰符。然而,像许多java项目一样,像MySDK这样的java项目由不同的包组成,这些包对relivant java类的包进行了适当的分组 这意味着,如果我想隐藏/保护com.a.b.c中的一个类,那么在com.a中对世界可见的主根类将无法访问com.a.b.c等中受保护的类 我怎样才能
谢谢。Java名称空间和访问修饰符不是层次结构,即使这似乎是由文件夹组成的名称空间结构。Java实际上有一个带有任意完整限定名(点表示法)的平面名称空间
因此,如果您想关闭库类并同时在库中使用它,那么没有其他方法可以将它们放在同一个包中。也许最好解释一下:当您在包外使用一个类时,这个类成为API的一部分,因为Java中的每个包都是一个模块 您可以在子包中工厂化类并使用接口。这样,您就可以隐藏您的实现类。如果不进行who项目重组,就太混乱了。proguard怎么样?这能让类中的某些部分访问visibity吗?如果是,如何访问?