java反射
来源:互联网 发布:安卓应用知乎 编辑:程序博客网 时间:2024/06/05 18:26
一、概念:
People类:
输出结果:java.lang.String People.name
int People.age
boolean People.sex
getName
setName
getAge
setAge
isSex
setSex
wait
wait
wait
hashCode
getClass
equals
toString
notify
notifyAll
反射:主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!
二、作用:
1、反编译:.class-->.java
2、通过反射机制访问java对象的属性,方法,构造方法等;
三、sun公司的反射机制的类:
java.lang.Class;
java.lang.reflect.Constructor; java.lang.reflect.Field;
java.lang.reflect.Method;
java.lang.reflect.Modifier;
下面看一个例子:
- <span style="font-family:FangSong_GB2312;font-size:18px;">import java.lang.reflect.Constructor;
- import java.lang.reflect.Field;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import org.junit.Test;
- //通过这个类解析出People类的所有字段、方法,并对People进行实例化
- public class TestFlact {
- @Test
- public void loadClazz() throws ClassNotFoundException, SecurityException,
- NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException {
- Class<?> clazz = Class.forName("People"); //把People类加载到内存
- //创建出类的实例
- Constructor<?> con = clazz.getConstructor(String.class);//获得People的构造函数
- People p = (People) con.newInstance("hello");//调用people构造函数获得实例
- //解析出所有的字段
- Field[] f = clazz.getDeclaredFields();
- for (Field field :f){
- System.out.println(field.toGenericString());
- }
- //解析出所有方法。
- Method[] method = clazz.getMethods();
- for(Method th : method){
- System.out.println(th.getName().toString());
- }
- }
- }
- </span>
- <span style="font-family:FangSong_GB2312;font-size:18px;">public class People {
- String name ;
- int age;
- boolean sex;
- People(){
- }
- People(String name){
- }
- 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 boolean isSex() {
- return sex;
- }
- public void setSex(boolean sex) {
- this.sex = sex;
- }
- }
- </span>
输出结果:java.lang.String People.name
int People.age
boolean People.sex
getName
setName
getAge
setAge
isSex
setSex
wait
wait
wait
hashCode
getClass
equals
toString
notify
notifyAll
0 0
- 【反射】JAVA反射机制
- JAVA 反射
- java 反射
- Java反射
- java反射
- java反射
- JAVA反射
- java 反射
- Java 反射
- java 反射
- Java反射
- java反射
- JAVA 反射
- java 反射
- Java反射
- java反射
- java 反射
- java 反射
- iOS po 命令打印视图层极
- IOS自动化测试之UIAutomation学习
- Mac下zookeeper启动失败/zookeeper_server.pid:Permission denied
- 操作系统精髓与设计原理(原书第6版)——学习笔记(6)
- 消除游戏的理解(3)
- java反射
- jquery 中prop()函数
- Android Studio常用设置大全
- python 在linux下调用Shell命令
- 利用servlet 实现JAVAWeb访问微信OAuth2.0认证,获取用户信息的实例
- CSS样式覆盖规则
- tomcat .do发布是虚拟目录无法访问
- Hashtable 与HashMap的区别
- 刷题之二叉树----判断一棵树是否为完全二叉树