java怎么控制某些方法只允许特定的jar包访问?

似乎很简单的问题,利用方法的可见性,如public private protected等。我觉得不好用,请问你们是怎么控制的?

有些方法只允许核心jar包访问,其它组件作为第三方插件,不允许直接访问,只能通过核心jar包的接口访问。这是需求:

这些方法用默认的可见性,即可包内访问,这样把调用类放到相同的包里,是可以的,但是核心jar包中别的包里也要访问怎么办?

1、在同一个包里再加一个类,把方法改为public的,这样大家可以调这个类,但是还是变成都可以访问了;

2、改为protected,允许子类访问,在核心包需要访问的包里加一个子类--但是任何包里都可以加子类,还是变成都可以访问了。

设要访问控制的jar为 A    核心jar为   B

如果B可以访问A的方法    那么B一定有A的依赖

第三方C可以通过访问B去调用A的方法    那么C一定有B的依赖

C有B的依赖就有A的依赖    所以C一直能直接访问A中的方法