反射 ---基础
来源:互联网 发布:斯诺克最新过百数据 编辑:程序博客网 时间:2024/05/18 01:19
反射是在只知道类的名字和路径的情况下,通过反射获取类中的属性,构造器,方法,并创建该类的对象,使用其中的方法。
反射可以分为 步:创建字符串(内容为类的路径)———- String s=”com.reflection.Test”
使用Class.forName得到该类的类——— Class c =Class.forName(s);
然后同过Class.get来取得属性,构造器,方法的数组——– Filed / Constructor /Method [] f =c.getFiled(); / c.getConstructor(); / c.getMethod();
通过数组来调用属性,构造器,方法————-
其中属性为:f[X].set();
构造器:f[X].newInstance();
方法为:f[x].invoke();
String s ="reflection.Test"; Class c =Class.forName(s); Method m[]=c.getDeclaredMethods(); Constructor [] cons =c.getDeclaredConstructors(); Filed [] fil =c.getDeclaredFields(); for(Constructor con:cons){ System.out.println(con); } for(Method ma:m){ System.out.println(ma); } for(Filed fi:fil){ System.out.println(fi); } Test te =(Test) cons [0].newInstance(); //构造对象时需要强转 m[4].invoke(te,20); //调用第五个方法,对象为te,参数为20 fil[0].set(te,"lllll"); //给第一个属性赋值 }
结果输出为:
属性列表private java.lang.String 反射.Test.nameprivate int 反射.Test.age构造器列表public 反射.Test()方法列表public void 反射.Test.add(int)public java.lang.String 反射.Test.getName()public void 反射.Test.setName(java.lang.String)public void 反射.Test.setAge(int)public int 反射.Test.getAge()
特别要注意,静态的方法和属性可以直接调用,当没有参数列表或对象时用null表示。
阅读全文
0 0
- 反射基础
- 反射基础
- 反射基础
- 反射基础
- 反射基础
- 反射基础
- 反射基础
- 反射基础
- 反射 ---基础
- 反射基础
- 反射基础
- 反射基础
- 反射-基础
- 反射基础
- java反射(一):反射基础
- Java 反射基础
- 反射基础Class类
- java基础加强--反射
- TCP/IP, WebSocket 和 MQTT
- reselsense采集深度值
- 如何防止鼠标移出移入子元素触发mouseout和mouseover事件
- java集合vector与stack
- 简单背景图片,鼠标移动特效
- 反射 ---基础
- iOS之旅--NIM SDK 使用指南
- IIS7 运行php系统,asp.net与php同时支持
- 浅析:领域模型、贫血模型和充血模型
- python做科学计算 numpy scipy matplotlib
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第一部分
- cocos2dx多个按钮同时响应点击事件
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第二部分
- 基于springmvc的简单下载