java吧 关注:1,238,945贴子:12,709,238

回复:【求助】如何能让某个函数允许被指定的包内的类调用?

只看楼主收藏回复

靠访问符控制做不到哦
只能把a、b合并了


IP属地:江苏17楼2014-09-28 09:03
收起回复
    a和b包合并,是否可行?




    18楼2014-09-28 10:16
    收起回复
      想实现编译错误,那是不可能的了。


      IP属地:安徽来自Android客户端19楼2014-09-28 11:26
      回复
        屌,不懂帮顶,坐等大神出现


        IP属地:上海来自Android客户端20楼2014-09-28 11:33
        回复
          包a公开接口,default权限实现类
          然后用反射来获取实现类实例


          IP属地:广西21楼2014-09-28 14:32
          收起回复
            大神妹子又来了,游戏框架……吾等渣渣只能仰望


            来自Android客户端22楼2014-09-28 15:24
            收起回复
              重新看了一下,似乎需求很严苛啊……硬是要实现的话也是可以的,但是会很蛋疼
              a和b有如此的依赖的会把它们合并当然是最好的了
              package a;
              public interface Accessor{
              void access();
              }
              public interface AccessorFactory{
              Accessor getAccessor(A a);
              }
              public class A{
              //要限制访问的方法
              void someMethod(){
              }
              Accessor getAccessor(){
              // 没有Java 8的话用内部类实现Accessor亦可
              return this::someMethod;
              }
              }
              class AccessorFactoryImpl{
              public Accessor getAccessor(A a){
              return a.getAccessor();
              }
              }
              package b;
              class Accessor{
              static a.AccessorFactory fac;
              static{
              // 反正就是获取类然后解除访问限制然后构造实例,详细不写了
              // Class.forName("a.AccessorFactoryImpl")
              }
              public static void access(A a){
              fac.getAccessor(a).access();
              }
              }


              IP属地:广西23楼2014-09-28 15:43
              收起回复
                一般的标示符貌似实现不了楼主的要求了,你可以这样,写一个filter,对b包进行权限控制,然后使用代理AOP的模式 来对所有对b的访问进行控制,你这个问题放大一点就是 项目的权限控制


                IP属地:河南24楼2014-09-28 16:10
                收起回复
                  沫沫大神


                  来自Android客户端25楼2014-09-28 16:33
                  收起回复
                    沫沫大神


                    26楼2014-09-28 20:29
                    回复
                      看的我吐血了。。。。你抛开了面向对象的有点,禁止了代码模块化。其实我想说的有一种东西叫做注解。。。


                      IP属地:浙江通过百度相册上传27楼2014-09-28 20:36
                      收起回复
                        屌炸天


                        来自Android客户端28楼2014-09-28 20:43
                        回复
                          建议oracle在java9中增加个类访问控制familial吧


                          IP属地:河北来自Android客户端31楼2014-09-29 07:07
                          收起回复
                            注解


                            IP属地:日本来自Android客户端33楼2014-10-02 00:24
                            收起回复
                              我想到了cpp的友元。。


                              IP属地:美国来自Android客户端34楼2014-10-02 13:55
                              收起回复