JAVA 反射机制(Java Reflection)总结(一)
来源:互联网 发布:python argv 编辑:程序博客网 时间:2024/06/06 00:03
一、先看一看,百度百科给Java Reflection所下的定义
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
什么意思呢?可以简单理解为,通过类名,得到类中的方法和属性;用一个对象来获取它的方法和属性
二、反射用到的类
java.lang.Class, java.lang.reflect.*
三、小试牛刀
//创建一个类,用于测试package com.liu.bao;public class Student { private String name; private int age; private String address; public Student() { } public Student(String name, int age, String address) { this.name = name; this.age = age; this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }}
1 获取类
//1、getClass()方法Student student = new Student();Class c1 = student.getClass();//2、静态方法 forName()Class c2 = Class.forName("com.liu.bao.Student");//3、对于一个已定义的类型,在java中,它的.class文件名:T.class就代表了与其匹配的Class对象Class c3 = Student.class;
2 创建对象
Class class = Class.forName("com.liu.bao.Student");Object o = class.newInstance();//调用无参构造方法,重写构造方法时,必需写一个无参构造
3 获取属性字段
Class c = Class.forName("com.liu.bao.Student"); Field[] fs = c.getDeclaredFields(); //获取所有的属性 (getFields()方法只能获得public属性) StringBuffer sb = new StringBuffer(); sb.append(Modifier.toString(c.getModifiers()) + " class " + c.getSimpleName() +"{\n"); // Modifier.toString(c.getModifiers()) 获取修饰符 c.getSimpleName()获取类名for(Field field:fs){ sb.append("\t");//空格 sb.append(Modifier.toString(field.getModifiers())+" ");//获得属性的修饰符,例如public,static等等 sb.append(field.getType().getSimpleName() + " ");//属性的类型的名字 sb.append(field.getName()+";\n");//属性的名字+回车 } sb.append("}"); System.out.println(sb);//输出结果如下:public class Student{ private String name; private int age; private String address;}
4 获取构造方法
Class c = Class.forName("com.liu.bao.Student"); Constructor[] constructors = c.getConstructors(); for(Constructor constructor:constructors) { System.out.println(constructor); }//输出结果如下:public com.liugan.baojun.Student()public com.liugan.baojun.Student(java.lang.String,int,java.lang.String)
5 获取方法
Class c = Class.forName("com.liu.bao.Student"); Method[] methods = c.getDeclaredMethods(); StringBuffer sb = new StringBuffer(); sb.append(Modifier.toString(c.getModifiers())+" "+"class"+ " " + c.getSimpleName()+"{\n"); for (int i = 0; i < methods.length; i++) {//外层循环,获取所有的方法 sb.append("\t"+Modifier.toString(methods[i].getModifiers())+" "); sb.append(methods[i].getReturnType().getSimpleName()+" "); sb.append(methods[i].getName()+"("); Parameter[] parameters = methods[i].getParameters(); for (int j = 0; j < parameters.length; j++) {//内层循环,获取某方法所有参数类型 sb.append(parameters[j].getType().getSimpleName()+" "+"arg"+j); if(j<parameters.length-1) { sb.append(", "); } } sb.append("){}\n"); } sb.append("\n}"); System.out.println(sb);//输出结果如下:public class Student{ public String getAddress(){} public String getName(){} public void setName(String arg0){} public int getAge(){} public void setAge(int arg0){} public void setAddress(String arg0){}}
阅读全文
0 0
- JAVA 反射机制(Java Reflection)总结(一)
- Java反射机制(Reflection )
- Java反射机制(Reflection)
- java Reflection(反射)机制
- java reflection(反射机制)
- JAVA 反射机制(Java Reflection)总结(二)
- 初识Java反射机制——Reflection(一)
- Java中反射机制(Reflection)学习
- Java中反射机制(Reflection)学习
- Java中反射机制(Reflection)学习
- Java中反射机制(Reflection)学习
- Java中反射机制(Reflection)学习
- Java中反射机制(Reflection)学习
- java之反射机制(reflection)
- Java中反射机制(Reflection)学习
- Java中反射机制(Reflection)学习
- Java中反射机制(Reflection)
- Java中反射机制(Reflection)学习
- 练习12
- 大数据环境部署-1-从安装虚机到配置本地yum
- JDBC
- iOS-AotuLayout实现与理解
- static变量与函数
- JAVA 反射机制(Java Reflection)总结(一)
- process csv in matplotlib
- STP生成树协议
- 混控
- 排序--冒泡排序
- 数据结构——二叉树
- PHP实现各种经典算法
- java线程的中断
- Android Monkey测试入门-2-ADB安装和卸载命令