classloader的原理 有哪些类加载器 为什么要用自定义类加载器

如题所述

原理之类的,你自己上网看资料吧,不是一两句话说得清的。

至于为什么用自定义类加载器,个人总结了一下可能有下面几点吧,可能不全,也请大家补充:

    加密:众所周知,java代码很容易被反编译,如果你需要把自己的代码进行加密,可以先将编译后的代码用某种加密算法加密,然后实现自己的类加载器,负责将这段加密后的代码还原。

    从非标准的来源加载代码:例如你的部分字节码是放在数据库中甚至是网络上的,就可以自己写个类加载器,从指定的来源加载类。

    动态创建:为了性能等等可能的理由,根据实际情况动态创建代码并执行。

    其他(这个理由非常给力吧^_^)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-14
比较典型的自定义classloader使用情况就是给类加密。java编译的代码可以轻易的被反编译,有些企业会给自己的类做特殊的加密,防止反编译,类加密后就不能再用java的
classloader去加载类了,这时就需要自定义classloader,再加载类的时候先解密类,然后再加载。
具体的代码自己可以百度一下class加密有很多文章介绍的。
相似回答