java中利用Class.forName()去获得字节码文件,同时实例化对象,然后利用该对象的方法 |
首先创建一个类,Dog package ClassLoader; public class Dog { int age; String name; public Dog(int age,String name){ this.age=age; this.name=name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } } |
接下来测试类来获取上边类的字节码文件:
package ClassLoader; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class FetchClass { public static void main(String[] args) { try { Class clazz = Class.forName("ClassLoader.Dog");//获得dog类的字节码文件 Constructor constructor = clazz.getConstructor(int.class, String.class);//获得dog类中的带参数的构造器 Dog dog = (Dog) constructor.newInstance(2, "ahuang");//给实例对象赋值 System.out.println("狗的年龄是:" + dog.getAge() + " 狗的名字叫:" + dog.getName()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }控制台输出如下: