java反射机制
来源:互联网 发布:mysql5.7 修改端口号 编辑:程序博客网 时间:2024/06/06 12:36
最近在做一个基于SSH+Extjs框架的办公管理系统,感觉办公系统比较简单,model-dao-service-action可以一一对应,于是开始着手做一个可以自动产生系统各种文件的小工具,这样就是省去了绝大多数的敲代码的功夫。但是在做工具的时候遇到了一些问题,比如如何得到某个类的的实例,如何得到某个类里面所有的变量及这些变量的类型。我上网查阅资料发现java反射机制是个好东西,用这种机制就可以轻松解决这些问题。 下面我写代码来是详细说明一下怎么使用java的反射来解决我说的这几个问题。 首先怎么根据一个类的名字得到一个类的实例,注意是用类的名字的时候一定要用全名,比如在一个com.test包中有一个类Student,但是你不能认为这个类的名字叫做Student,这里这个类的名字全称应为com.test.Student。好,说了这些之后我们说一下具体怎么操作。 Class是java.lang包中java反射机制类大家族中的一个类,用Class.forName()方法可以得到一个类的实例。比如上一段中的Student类,我们可以这样得到。
package test;public class Test{public static void main(String[] args){try{Object object = Class.forName("com.test.Student").newInstance();Student student = (Student) object;}catch (ClassNotFoundException e){System.out.println("未找到类com.test.Student");e.printStackTrace();}catch (ClassCastException e){System.out.println("类型转换失败");e.printStackTrace();}catch (InstantiationException e){e.printStackTrace();}catch (IllegalAccessException e){e.printStackTrace();}}}
关于第二个问题,我们可以是用类的getClass().getDeclaredFields()方法得到所有的声明的变量放到一个java.lang.reflect.Field fields[]数组中,我们可以通过调用Field类的getName()方法得到这个变量的名字,用个fields[i].getType()可以得到第i个变量的数据类型,假如我们声明的变量数据类型为int,则getType()方法得到的类型是int,假如我们声明的变量是Date则我们得到的getType类型为class java.util.Date。下面我们用代码来具体实现一下。
package test;public class Test{public static void main(String[] args){TestClass test = new TestClass();java.lang.reflect.Field fields[] = test.getClass().getDeclaredFields();for (int i = 0; i < fields.length; i++){System.out.println(fields[i].getName() + ":" + fields[i].getType());}}}
- 【反射】JAVA反射机制
- 【Java】JAVA反射机制
- Java 反射机制[Field反射]
- Java 反射机制[Method反射]
- Java反射机制笔记-反射机制
- java的反射机制
- Java的反射机制
- java反射机制详解!
- Java反射机制
- Java的反射机制
- java 反射机制--侯捷
- java反射机制
- java反射机制
- [候捷]Java反射机制
- java 反射机制
- java 反射机制初探
- 关于Java反射机制
- java反射机制
- poj3468 A Simple Problem with Integers(成段增减 区间求和)
- 输出从矩阵左上角到右下角的所有路径
- js关闭当前页面的几种方式
- 扫描DataTable的速度测试
- “黑马程序员”学习笔记七
- java反射机制
- 郁闷的时候就看看
- “黑马程序员”学习笔记八
- C++网络编程之TCP UDP
- Java Json/xml 序列化和反序列化工具:JsonTools 和 simpleframework【附带实例】
- How to compile the IJG JPEG library (libjpeg) for Visual Studio 2010
- 网络配置笔记
- Linux添加/删除用户和用户组
- “黑马程序员”学习笔记九