相关疑难解决方法(0)

有没有办法在Java中模拟C++的"朋友"概念?

我希望能够在一个包中编写一个Java类,它可以访问另一个包中的类的非公共方法,而不必使它成为另一个类的子类.这可能吗?

c++ java accessor friend

182
推荐指数
5
解决办法
7万
查看次数

在安全性方面,非最终公共实例和非最终公共实例字段之间的区别?

我正在浏览这个链接,OBJ10-J.不要使用公共静态非最终字段,它说,

客户端代码可以简单地访问公共静态字段,因为安全管理器不会检查对这些字段的访问.

那是什么意思呢?即逃离安全经理他们是什么意思?

如果他们只是意味着它,因为现场被非最终public,然后怎么来的非最终,public实例字段比他们不同static的同行?(就代码安全而言)

我已经经历过这个问题并且在安全方面没有看到任何提及,为什么静态变量被认为是邪恶的

publicclass的public static字段可以从任何地方访问,所以public实例字段也可以访问,那么区别在哪里?为什么非最终 public实例字段不是安全问题,而是存在static

java java-security

10
推荐指数
1
解决办法
461
查看次数

Java库重用

在软件开发中,我们都使用软件提供商提供的库.在A类中考虑有四个函数,即x,y,z.我只是希望我的开发团队避免使用x函数.因此,我找到了一个想法,而不是告诉他们不要使用.继承类并覆盖所有函数,对于函数x,抛出一个不支持的方法异常,其余的我调用超级方法.我也发现了一个问题,开发人员可以直接使用基类A,如何避免直接使用A类.我在OSGi中发现了类似的功能,可以引入lib包然后不导出等等.有没有办法实现这个是java?

java

5
推荐指数
1
解决办法
352
查看次数

Java SecurityManager - 如何确保方法仅由另一个方法运行?

我希望B只能通过对敏感数据使用或执行某些处理的private方法运行A#getSensitiveData()(例如:加密密钥,国家ID,等等).

public final class A{
    private transient final B sensitiveHolder; //set at Constructor
    public A(B sensitiveHolder){
        this.sensitiveHolder = sensitiveHolder;
    }
    private final byte[] getSensitiveData(){
        return sensitiveHolder.getSensitiveData();
    }
}

public final class B{
    private transient final byte[] sensitiveData;//encrypt and set at Constructor
    public final byte[] getSensitiveData(){
        //check if it is run by A#getSensitiveData(); if it is, decrypt by DEK and give plaintext.
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意代码将被混淆,因此请不要将任何包名称放入String.

我必须写什么跟SecurityManager#checkPrivilege()AccessController.doPrivileged()我能达到这样的效果之前?

编辑:显然这是不同的,因为所谓的"答案"不包含任何代码.工作代码的价值远远超过"哦,只做这个和那个".

java security

-3
推荐指数
1
解决办法
258
查看次数

标签 统计

java ×4

accessor ×1

c++ ×1

friend ×1

java-security ×1

security ×1