如何让某一个类只能让指定的某一个包或者类访问呢?

0轰隆隆0 2015-03-26 03:43:20
如何让某一个类只能让指定的某一个包或者类调用呢?
前提在另外的包里面。

比如有a、b、c、d 四个包,a包下面有个X类,现在只能让c包下的类或者c包下指定的类能访问X类。b、d包下面的类和上级的类都不能调用X类。

该怎么实现呢???
...全文
937 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
淡定的峰哥 2015-03-27
  • 打赏
  • 举报
回复
可以的,可以参照下面代码,下面是sun.misc.Unsafe类的代码片段,这个类只限制了bootstrap加载器所加载的类去调用

public final class Unsafe {
 
  //其他方法和属性省略
    private Unsafe() {}

    private static final Unsafe theUnsafe = new Unsafe();
    
   public static Unsafe getUnsafe() {
        Class cc = sun.reflect.Reflection.getCallerClass(2);
        if (cc.getClassLoader() != null)
            throw new SecurityException("Unsafe");
        return theUnsafe;
    }

}
你可以在调用你的类的方法或构造器里得到是谁调用的,如果调用者不在你的class允许的列表里,可以抛出异常
冥王之锤 2015-03-27
  • 打赏
  • 举报
回复
违反 编程一般准则的需求。
skgary 2015-03-27
  • 打赏
  • 举报
回复
引用 楼主 fulong258 的回复:
如何让某一个类只能让指定的某一个包或者类调用呢? 前提在另外的包里面。 比如有a、b、c、d 四个包,a包下面有个X类,现在只能让c包下的类或者c包下指定的类能访问X类。b、d包下面的类和上级的类都不能调用X类。 该怎么实现呢???
把CallStack调出来,做一下检查,看看是由哪里调进来的。 不过,这要求,是不是某些不懂技术的给了一个技术解决方案?
伱oO○祗噵 2015-03-27
  • 打赏
  • 举报
回复
其次如果那个类不想被别人调用,你可以通过编码规范来告诉程序员嘛
伱oO○祗噵 2015-03-27
  • 打赏
  • 举报
回复
第一类放哪都一样,为什么非要放a里,然后让只有c可以调用呢?需求本人就很逗比,还是你只想同时让 a 和c调用?
伱oO○祗噵 2015-03-27
  • 打赏
  • 举报
回复
引用 3 楼 fulong258 的回复:
[quote=引用 2 楼 伱oO○祗噵 的回复:] 如果是java的话,包访问权限就行了,只能这个包类的程序可以调用,其他的程序调用不了的
达不到需求的要求![/quote]为什么呢?你把不想被调用的类,想被谁调用就放那个包里不就完了吗
0轰隆隆0 2015-03-27
  • 打赏
  • 举报
回复
引用 2 楼 伱oO○祗噵 的回复:
如果是java的话,包访问权限就行了,只能这个包类的程序可以调用,其他的程序调用不了的
达不到需求的要求!
伱oO○祗噵 2015-03-27
  • 打赏
  • 举报
回复
如果是java的话,包访问权限就行了,只能这个包类的程序可以调用,其他的程序调用不了的
0轰隆隆0 2015-03-27
  • 打赏
  • 举报
回复
被冷落了,没人回答
强迫症患者 2015-03-27
  • 打赏
  • 举报
回复
我想的是。 一个单利设计模式,当创建这个对象的时候,做一个判断,只让你允许的包实现这个 new instanc()。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧