开始学习Javaweb,看到了反射,现在还没有用上,先把基础的写上来吧 package com.april.write; public class Grade { private int num; public Grade() { System.out.println("Grade"); } public Grade(int a) { System.out.println(a); } public Grade(String s, int b) { System.out.println(s + b); } public Grade(String s, int[] c) { System.out.println(s + c); } private Grade(String s) { System.out.println(s); } public void aa() { System.out.println("aa"); } public void aa(String s) { System.out.println(s); } public void aa(String s,int a) { System.out.println(s + a); } public int aa(int i) { return i; } public static void a() { System.out.println("a"); } } 这是一个简单的类,利用反射生成这个类的实例,调用这个类中的方法。 package com.april.write; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import org.junit.Test; public class Reflect { //反射无参的构造函数 @Test public void Test1() throws ClassNotFoundException, Exception { Class cla = Class.forName("com.april.write.Grade"); Constructor con = cla.getConstructor(null); con.newInstance(null); } //反射带一个参数的构造函数 @Test public void Test2() throws Exception { Class cla = Class.forName("com.april.write.Grade"); Constructor con = cla.getConstructor(int.class); con.newInstance(4); } //反射带两个参数的构造函数 @Test public void Test3() throws Exception { Class cla = Class.forName("com.april.write.Grade"); Constructor con = cla.getConstructor(String.class,int.class); con.newInstance("hello",2); } //反射带两个参加,其中一个是数组的构造函数 @Test public void Test4() throws Exception { Class cla = Class.forName("com.april.write.Grade"); Constructor con = cla.getConstructor(String.class,int[].class); int[] a = {1,2,3,4}; Grade g = (Grade) con.newInstance("hell0",a); } //反射私有的构造函数 @Test public void Test5() throws Exception { Class cla = Class.forName("com.april.write.Grade"); Constructor con = cla.getDeclaredConstructor(String.class); con.setAccessible(true);//暴力反射 Grade g = (Grade) con.newInstance("world"); } //反射一般的无参方法 @Test public void Test6() throws Exception { Grade g = new Grade(); Class cla = Class.forName("com.april.write.Grade"); Method me = cla.getMethod("aa", null); me.invoke(g, null); } //反射带一个参数的方法 @Test public void Test7() throws Exception { Grade g = new Grade(); Class cla = Class.forName("com.april.write.Grade"); Method me = cla.getMethod("aa", String.class); me.invoke(g, "Hello"); } //反射带两个参数的方法 @Test public void Test8() throws Exception { Grade g = new Grade(); Class cla = Class.forName("com.april.write.Grade"); Method me = cla.getMethod("aa", String.class,int.class); me.invoke(g, "Hello",2); } //反射静态的方法 @Test public void Test9() throws Exception { Class cla = Class.forName("com.april.write.Grade"); Method me = cla.getMethod("a", null); me.invoke(null, null); } } 相关文章: