会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
Java EE
博客园
首页
新随笔
联系
管理
订阅
反射类的构造函数和方法
开始学习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); } }
posted @
2012-04-08 15:32
Java EE
阅读(
306
) 评论(
0
)
编辑
收藏
举报
刷新页面
返回顶部
公告