知识点总结:
取反
使用简单的取反操作作为加密的方式,与0xFF异或来实现
异或:对应位不相同就返回1,相同返回0
每一位与1异或,原本是1,因为相同返回0,1变成0;原本是0,因为不相同返回1,0变成1;从而实现取反的功能文件IO流
FileInputStream和FileOutputStream,从输入流得到字节,取反,输出给输出流,从而得到加密之后的类文件。解密类加载器
读取class文件时有一个解密的过程,对字节取反。自定义类加载器需要继承ClassLoader父类,重写findClass()方法。双亲委托机制
子类会先调用父类加载器进行加载,如果所有父类都无法加载,才调用子类(通常是自定义类加载器)来加载。是否使用双亲委托机制,是可以在自定义加载器是自己控制的。
双亲委托机制中try-catch的使用,由于优先调用父类加载器,如果父类加载器无法加载,那么程序无法继续执行,报错停止。通过try-cath代码块包括父类加载器加载的那段代码,程序会遇到异常之后,执行catch中的代码,然后继续执行之后的代码。如果异常可以忽略,那么catch代码块中直接什么都不写即可,程序会继续正常执行。这是try-catch一个之前自己没有意识到的功能。