博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java反射机制示例
阅读量:5806 次
发布时间:2019-06-18

本文共 2847 字,大约阅读时间需要 9 分钟。

链接:

http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html

 

package com.stono.reftest;import java.lang.reflect.Array;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;public class Ref {    @SuppressWarnings("unused")    public static void main(String[] args) throws Exception {        // 实例化Class对象;Class是所有类的类;        Glyph glyph = new Glyph();        Class
class1 = glyph.getClass(); Class
class2 = Glyph.class; Class
class3; class3 = Class.forName("com.stono.reftest.Glyph"); // 通过Class对象实例化类;必须有无参构造函数 Glyph glyph2 = class1.newInstance(); // 通过Class对象获取构造函数; Constructor
[] constructors = class1.getConstructors();// 长度为1 // 获取构造函数的Modifier int modifiers = constructors[0].getModifiers(); // 获取Modifier字符串; String modifierStr = Modifier.toString(modifiers); // 获取构造函数的参数类型; Class
[] parameterTypes = constructors[0].getParameterTypes(); // 通过构造函数进行对象构造; Glyph glyph3 = (Glyph) constructors[0].newInstance(); // 获取类的所有接口; Class
[] interfaces = class3.getInterfaces(); // 获取类的父类 Class
superclass = class3.getSuperclass(); // 获取类的所有方法,不会返回构造函数; Method[] methods = class3.getMethods(); // 获取异常类型;Constructor和Method都继承自AccessibleObject Class
[] exceptionTypes = methods[0].getExceptionTypes(); Class
[] exceptionTypes2 = constructors[0].getExceptionTypes(); // 获取本地全部属性;包括公共和私有; Field[] fields = class3.getDeclaredFields(); // 取得公共属性; Field[] fields2 = class3.getFields(); // 获取method Method m = class3.getMethod("writeGlyph", String.class); // 调用method m.invoke(class3.newInstance(), "g"); // 获取某一个属性,可以是私有的; Field field = class3.getDeclaredField("name"); // 设置其访问权限; field.setAccessible(true);     // 获得属性值 参考:http://blog.csdn.net/restraint/article/details/17951453     Object val = field.get(glyph3);//得到此属性的值  // 进行属性的设置; field.set(class3.newInstance(), "male"); // 定义数组; int[] iarr = { 1, 2, 3, 4, 5 }; // 获取数组元素的类型; Class
componentType = iarr.getClass().getComponentType(); // 获取数组长度; int length = Array.getLength(iarr); // 获取数组第二个元素; Array.get(iarr, 1); // 设置数组第二个元素; Array.set(iarr, 2, 200); // 创建某类型的数组;长度为10; Object newArray = Array.newInstance(componentType, 10); // 进行数组拷贝 System.arraycopy(iarr, 0, newArray, 0, length); }}@SuppressWarnings("unused")class Glyph implements icon { private String name; public Glyph() { } public void writeGlyph(String g) { System.out.println(g); }}interface icon {}

 

你可能感兴趣的文章
竟然屏蔽支付宝
查看>>
常用推荐算法
查看>>
Cocos2d-x游戏实例-《跑跑跑》制作教程(第六篇)——添加障碍物
查看>>
自定义ZXing二维码扫描界面并解决取景框拉伸等问题
查看>>
Jaxb2 实现JavaBean与xml互转
查看>>
ubuntu五笔死机
查看>>
android httpClient 支持HTTPS的2种处理方式
查看>>
Win7开启Telnet客户端
查看>>
php输出数据库结构表
查看>>
常用SQL语言概述(DDL、DML、DQL)
查看>>
酷炫开源项目cardsui-for-android-超详细源码分析,详解所用特效是如何实现的
查看>>
java对cookie的操作
查看>>
LXC快速入门(4)——配置文件简介及网络配置实例
查看>>
angular的$index
查看>>
expect自动化交互脚本(二)
查看>>
毕业了
查看>>
去掉ecshop中后台更新提示和修改ECSHOP前后台的验证码背景
查看>>
微信模板消息
查看>>
Java Instrumentation 进行热替换
查看>>
centos6.0安装denyhosts2.6总结
查看>>