java吧 关注:1,217,849贴子:12,669,704

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

只看楼主收藏回复

比如现在我有a, b, c三个包,我在a里面写了一个类,类里有一个函数,如何让这个函数只能在b包中被调用,而不允许在c包中调用?貌似public、private、protected或者不写,都做不到啊。
只要能调用,把a包放进b包也成啊~~
我现在只好把a包和b包并成一个包,然后只允许包内调用……
可是感觉包里太多类,想分出来啊,强迫症完全忍不了啊~~~


IP属地:浙江1楼2014-09-27 15:31回复
    IP属地:浙江2楼2014-09-27 15:31
    收起回复
      @╱―★神★―╲ @dtph007 @Distinys @大召唤术 @Java吧所有人


      IP属地:浙江3楼2014-09-27 15:32
      收起回复
        虽然很想帮你,但我没办法。。额


        来自Android客户端4楼2014-09-27 15:47
        回复
          老夫有一计,把a包中的那个方法定义为private还是啥的,b包中的方法继承该方法,不知可行否


          来自iPhone客户端5楼2014-09-27 15:56
          收起回复

            好好上班,乱写什么游戏?


            IP属地:河南6楼2014-09-27 16:17
            收起回复
              让a中那个类实现一个没有那个函数的接口,那么c包中用接口来new这个类就用不着这个函数了,b包中直接用类名new是可以调那个函数的。


              IP属地:广东来自Android客户端8楼2014-09-27 17:36
              收起回复

                我今天也遇到同样的问题希望某个指定的类可以修改某个类的属性


                IP属地:湖北9楼2014-09-27 18:07
                收起回复
                  protected可以在包外通过继承调用


                  来自Android客户端10楼2014-09-27 18:16
                  收起回复
                    我只想说。。。。。。。。。。请用。。。。。。。。。。。单例模式。。。。。。。。。。。。。


                    11楼2014-09-27 20:07
                    收起回复
                      内部类。。。。。。。。。。。。。。。。。。


                      12楼2014-09-27 20:10
                      收起回复
                        在方法中查看throwable里面的方法栈信息,看调用这个方法的方法在不在指定包中,在则继续执行,不在则直接返回


                        IP属地:上海来自Android客户端13楼2014-09-27 21:26
                        收起回复
                          情儿一般不出世,出世非精即难!对不起,帮不了你


                          IP属地:广东来自iPhone客户端14楼2014-09-27 21:30
                          收起回复
                            有点没看懂你的意思,如果只想让一个包调用这个方法的话可以把这个方法写成静态方法,只能通过(类名.静态方法)去调用。这样那个包想去调用这个方法就可以做到了


                            15楼2014-09-27 21:38
                            收起回复
                              这样。。。。每次你把class传进去。获取它的全类名,如果有b包的报名,就执行。不然就返回null。这样行了吧。
                              更严谨的,你可以用正则准确定位在某截获取到这个包名。


                              16楼2014-09-27 22:55
                              收起回复