gpt4 book ai didi

java - 使类方法可从程序中的任何位置调用,但不能从程序外部调用

转载 作者:行者123 更新时间:2023-11-30 02:50:00 24 4
gpt4 key购买 nike

我在项目中创建了一个扩展 java.util.Logger 的类 MyLogger,我希望每个类都使用相同的记录器,因此有一个静态 getLogger() 方法,它返回一个 记录器对象。

计划是让它成为一个 jar 文件,可以包含在其他人的程序中,但我不希望他们能够使用这个自定义记录器(即,如果他们想要记录,他们需要设置它他们自己有自己的记录器)。

有什么办法可以让 MyLogger 类位于自己的包中,同时允许我的项目/jar 中的其余类能够访问 getLogger() 方法,但不允许我的项目外部的类调用它(有点像包私有(private),但对于整个项目)或者是将其放入我的“父”包中的唯一方法?

最佳答案

是的,您可能注意到您不能将类放入包java.util中,该技术就是JSA。您可以使用SecurityManager(使用访问 Controller )。如果调用记录器事件的库未经过您的私有(private)证书认证,它将抛出未经检查的 AccessControlException

您将在 FileOutputStream 中找到一个很好的示例,如下所示:

SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(name); // throws ACE
}

要验证完整的 JVM 并禁用检查,您可以将私钥添加到 jdk-xxx/jre/lib/security/cacerts( keystore )。

关于java - 使类方法可从程序中的任何位置调用,但不能从程序外部调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39027364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com