反射事例代码
来源:互联网 发布:粤菜菜谱大全软件 编辑:程序博客网 时间:2024/06/10 06:37
获取 Class 的方式有三种
类 obj=new 类;
//获取该对象所获取类的信息
Class class=Cat.class;
Class catcat.gteClass();
Class cat.forName(“包名+类名”);
public class bean {
public String getName() { return name;}public void setName(String name) { this.name = name;}private String name;public bean() {}public bean(String name) { this.name = name;}private void getdata() { System.out.println("---------private");}
}
import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class mymain {
public static void main(String[] args) { bean b = null; // 通过类获取类的信息 Class myclass = bean.class; try { b = (bean) myclass.newInstance(); // bean 要有无参构造器否则会报错 } catch (InstantiationException | IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 传参的构造函数 try { Constructor c = myclass.getConstructor(String.class); b = (bean) c.newInstance("Tom"); System.out.println(b.getName()); } catch (NoSuchMethodException | SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 获取类的所有方法包括私有方法 Method[] method = myclass.getDeclaredMethods(); for (int i = 0; i < method.length; i++) { String name = method[i].getName(); System.out.println(name); } // 获取属性值 Field[] value = myclass.getDeclaredFields(); for (int i = 0; i < value.length; i++) { System.out.println(value[i].getName()); } value[0].setAccessible(true); String name; try { name = (String) value[0].get(b); System.out.println(name); } catch (IllegalArgumentException | IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 反射调用其方法 try { Method m = myclass.getDeclaredMethod("getdata"); m.setAccessible(true); m.invoke(b); } catch (NoSuchMethodException | SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); }}
}
0 0
- 反射事例代码
- C#.net反射-代码事例
- C#反射在实际应用中的事例代码
- 代码事例
- JAVA反射事例
- java反射事例
- JAVA反射机制事例一
- JAVA反射机制事例二
- 客户端代码事例
- UIScrollView事例(代码)
- 代码事例1
- 代码事例2
- 代码事例3
- solr实战代码事例
- SurfaceView简介(事例代码)
- bootStrap事例代码
- C# 事务的事例代码
- MVC 精髓理解事例代码
- 第8周项目3-顺序串算法
- 【学习OpenCV】仿射变换函数warpAffine、旋转
- epoll和select区别
- 怎样保护“/tmp/mysql.sock ”不被删除
- 第十一周--【项目1 - 二叉树算法验证】
- 反射事例代码
- 第十一周 项目一-验证算法
- 猴子选大王
- Redis实现分布式锁
- vc2008中使用CMFCMenuBar如何动态改变菜单文本
- C++常用string函数
- 第9周项目1-猴子选大王
- 第10周 项目3 - 利用二叉树遍历思想解决问题
- Your project contains error(s) please fix them ...... android创建第一个项目报错与解决办法