为什么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
方法需要实现适当的访问检查。(不要将受保护的修饰符与访问控制/安全混淆。它们解决了不同的问题。)