链接:

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<? extends Glyph> 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 {
}

Java反射机制示例的更多相关文章

  1. JAVA反射机制示例,读取excel数据映射到JAVA对象中

    import java.beans.PropertyDescriptor; import java.io.File; import java.io.FileInputStream; import ja ...

  2. Java 反射机制(包括组成、结构、示例说明等内容)

    第1部分 Java 反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据“类的部分已经的信息”来还原“类的全部的信息”.这里“类的部分已经的信息”,可以是“类名”或“类的对象” ...

  3. [转载]Java 反射机制(包括组成、结构、示例说明等内容)

    FROM:http://www.cnblogs.com/skywang12345/p/3345205.html 第1部分 Java 反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们 ...

  4. 第28章 java反射机制

    java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...

  5. java基础知识(十一)java反射机制(上)

    java.lang.Class类详解 java Class类详解 一.class类 Class类是java语言定义的特定类的实现,在java中每个类都有一个相应的Class对象,以便java程序运行时 ...

  6. java反射机制深入详解

    java反射机制深入详解  转自:http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html 一.概念 反射就是把Java的各种成分映射成 ...

  7. 反射——Java反射机制

    反射概述 什么是反射? ①   反射的概念是由Smith在1982年首次提出的,主要指程序可以访问.检测和修改它本身状态或行为的一种能力. ②   JAVA反射机制是在运行状态中,对应任意一个类,都能 ...

  8. Java反射机制(Reflection)

    Java反射机制(Reflection) 一.反射机制是什么 Java反射机制是程序在运行过程中,对于任意一个类都能够知道这个类的所有属性和方法;对于任意一个对象都能够调用它的任意一个方法和属性,这种 ...

  9. Java反射机制的学习

    Java反射机制是Java语言被视为准动态语言的关键性质.Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调 ...

随机推荐

  1. Base64编码Java实现

    一.什么是Base64编码 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一.Base64 主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输. 由于一些二进制字符在 ...

  2. PS2键盘 + LCD12864 实验

    本实验是通过LCD12864来显示键盘上被按下的按键,实验比较简单,在LCD12864固定的DDRAM地址上显示,缺点就是不能保存上一次被按的内容,后者会覆盖掉前面,所以屏上仅有一个字符显示.保存上一 ...

  3. [iOS]关于零基础学习iOS开发的学习方法总结

    关于零基础学习iOS开发的学习方法总结 最近很多零基础来参加蓝鸥培训的学生经常会问到一些学习方法的问题,就如下我自己见过的好的学习方法一起讨论一下. 蓝鸥iOS开发技术的学习路线图 程序员的主要工作是 ...

  4. mysql基础---日志文件

    一 基本日志文件 MYSQL有不同类型的日志文件(各自存储了不同类型的日志),从它们当中可以查询到MYSQL里都做了些什么,对于MYSQL的管理工作,这些日志文件是不可缺少的. 1.错误日志(The ...

  5. Android网络开发之Volley--Volley自定义Request

    1.自定义一个解析Json的Request,这里使用JackSon框架来解析Json.你也可以自定义一个解析XML的Request,或者使用FastSon来解析Json. 2.我们首先来看一下Stri ...

  6. armstrong's programming erlang 2nd

    Re: json handling map functions in erlang 17 I have not read Joes final book on the matter (several ...

  7. PAT (Advanced Level) 1005. Spell It Right (20)

    简单题. #include<iostream> #include<cstring> #include<cmath> #include<algorithm> ...

  8. 省市二级联动--使用app-jquery-cityselect.js插件

    只有省市二级联动,三级联动还没处理好,会尽快完善. 嵌入id: <div class="form-group"> <label>地址</label&g ...

  9. Word字体与像素的对应关系(转)

    源:Word字体与像素的对应关系 英文字体的1磅(pt),相当于1/72 英寸(inch),约等于1/2.8mm.12PT的字打印出来约为4.2mm.网页中12px的字才相当于12像素. 虽然 四号= ...

  10. openstack controller ha测试环境搭建记录(十)——配置neutron(控制节点)

    创建neutron用户:mysql -u root -p CREATE DATABASE neutron;GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@ ...