转自https://zhidao.baidu.com/question/753818032623355684.html
至于为什么用自定义类加载器,个人总结了一下可能有下面几点吧,可能不全,也请大家补充:
-
加密:众所周知,java代码很容易被反编译,如果你需要把自己的代码进行加密,可以先将编译后的代码用某种加密算法加密,然后实现自己的类加载器,负责将这段加密后的代码还原。
-
从非标准的来源加载代码:例如你的部分字节码是放在数据库中甚至是网络上的,就可以自己写个类加载器,从指定的来源加载类。
-
动态创建:为了性能等等可能的理由,根据实际情况动态创建代码并执行。
-
其他(这个理由非常给力吧^_^)