类装载器 ClassLoadeer

来源:互联网 发布:网页sql注入检测工具 编辑:程序博客网 时间:2024/06/05 05:27
/** * ClassLoader:类加载器 definition: 类装载器就是寻找类的字节码文件并构造出类在JVM内部表示的对象组件. * 1.获得ClassLoader ClassLoader loader = * Thread.currentThread().getContextClassLoader();  * 2.加载类 args:name 是类的全路径 * eg:com.saber.Car Class clazz = loader.loadClass(name);  * 3.获得类的构造器  * Construct<?> cons = clazz.getDeclaredConstructor();  * 4.实例化类  * Car car = (Car)cons.newInstance(); */public class InstanceCar {public Car instanceCar() throws ClassNotFoundException,NoSuchMethodException, SecurityException, InstantiationException,IllegalAccessException, IllegalArgumentException,InvocationTargetException, NoSuchFieldException {ClassLoader classLoader = Thread.currentThread().getContextClassLoader();String className = "com.saber.reflect.model.Car";Class<?> theCar = classLoader.loadClass(className);Constructor<?> carConstructor = theCar.getDeclaredConstructor();Car car = (Car) carConstructor.newInstance();car.setBrand("红旗");System.out.println(car.getBrand());Constructor<?> consfield = theCar.getDeclaredConstructor(String.class,String.class, Double.class);Field declaredField = theCar.getDeclaredField("brand");System.out.println(declaredField);Method setBrand = theCar.getDeclaredMethod("setBrand", String.class);Object cara = setBrand.invoke(car, "benchi");System.out.println(car.getBrand());Car carDZ = (Car) consfield.newInstance("大众", "red", 3000000.00);System.out.println(carDZ.getPrice());return null;}}

0 0