package com.wjy.main; import java.io.Console; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import com.wjy.reflect.Student; public class TestMain { public static void main(String args[]){ try{ Class<?> cls=Class.forName("com.wjy.reflect.Student"); //Class cls=Class.forName("com.wjy.reflect.Student"); //Class cls=Student.class; //Class cls=new Student().getClass(); /*上四句是等价的,但是最好使用第一种方法。 * */ Constructor<?> cons[] = cls.getConstructors(); // System.out.println(cons[0]); // Method method=cls.getDeclaredMethod("hi", new Class[]{int.class,String.class}); // method.invoke(cls.newInstance(),20,"shb"); // Student student=null; // student=(Student)cls.newInstance(); // student.hi(66, "shirly"); Student student=null; student=(Student)cons[0].newInstance(); student.hi(88, "shirly"); /** * 以上为三种方法,被注释的是前两种种方法。效果是等价的。 */ }catch(Exception e){ e.printStackTrace(); } // Student student=new Student(); // System.out.println(student.getClass().getName()); } }
其中Student类为:
package com.wjy.reflect; public class Student { private int age; private String 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; } public void hi(int age,String name){ System.out.println("大家好,我叫"+name+",今年"+age+"岁"); } }