我们自定义个一个java.lang.Math并放入main方法,发现:根据双亲委派原则,启动类加载器去加载了lib目录下的Math类,很不巧,这个机制专门防止外界模仿原生源码。那么自定义的Math类没有被加载,main方法自然找不到;
那我们不去模仿这个类,我们去造一个java.lang下的新类,并且自己实现一个类加载器,重写loadclass方法(打破双亲委派),看看可不可以
显然不行,内置判断了传入的字符串,只要包含java.lang就报错,安全异常,所以也无法鱼目混珠。
我们自定义个一个java.lang.Math并放入main方法,发现:根据双亲委派原则,启动类加载器去加载了lib目录下的Math类,很不巧,这个机制专门防止外界模仿原生源码。那么自定义的Math类没有被加载,main方法自然找不到;
那我们不去模仿这个类,我们去造一个java.lang下的新类,并且自己实现一个类加载器,重写loadclass方法(打破双亲委派),看看可不可以
显然不行,内置判断了传入的字符串,只要包含java.lang就报错,安全异常,所以也无法鱼目混珠。