Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么URLClassLoader.addURL在Java中受保护?_Java_Classloader - Fatal编程技术网

为什么URLClassLoader.addURL在Java中受保护?

为什么URLClassLoader.addURL在Java中受保护?,java,classloader,Java,Classloader,URLClassLoader.addURL需要保护吗?我这样问是因为我需要通过扩展URLClassLoader来编写一个自定义类加载,它所做的只是调用这个受保护的方法来添加一个jar文件。如果不预先考虑这一点,那么动态添加jar文件可能会更容易。向类加载器添加新URL通常是违反抽象的行为,可能会导致无法解释的事情发生。因此,它是隐藏的正常使用 您有一个不寻常的用例,在这个用例中,您(我假设)得出结论,封装冲突是危害较小的,允许应用程序的任何部分修补其父类加载器的内部是可以的。很公平。创建自定义类

URLClassLoader.addURL
需要保护吗?我这样问是因为我需要通过扩展
URLClassLoader
来编写一个自定义类加载,它所做的只是调用这个受保护的方法来添加一个jar文件。如果不预先考虑这一点,那么动态添加jar文件可能会更容易。

向类加载器添加新URL通常是违反抽象的行为,可能会导致无法解释的事情发生。因此,它是隐藏的正常使用


您有一个不寻常的用例,在这个用例中,您(我假设)得出结论,封装冲突是危害较小的,允许应用程序的任何部分修补其父类加载器的内部是可以的。很公平。创建自定义类加载器是实现这一点的方法。但是大多数人都不希望发生这种情况。

谢谢,我没有任何其他选择,因为我想在运行时动态加载jar文件,而对我的应用程序来说使用OSGi是过分的。@gigadot-我不知道你的问题是什么。公开
addURL
方法的自定义类加载器应该只有几行代码。。。而且写起来也很容易。我写一个也没问题。我只是想知道是否有任何安全风险。最好是,如果我可以避免编写类加载器,我会这样做。是的,向不受信任的代码公开
addURL
存在安全风险。如果这是一个问题,您的
addURL
方法需要实现适当的访问检查。(不要将
受保护的
修饰符与访问控制/安全混淆。它们解决了不同的问题。)