链接:

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. CTabCtrl

    转载至 http://blog.csdn.net/jacklam200/archive/2008/08/01/2753797.aspx 一.在对话框视图中加入CTabCtrl控件 资源ID:IDC_T ...

  2. MySQL:MySQL的安装

    一.Linux:MySQL的源码安装 1.安装前的准备 在安装之前需要安装一下必备的包和工具 gcc/g++:MySQL5.6开始,需要使用g++进行编译. cmake:MySQL5.5开始,使用cm ...

  3. 对STM32的NVIC_PriorityGroupConfig使用及优先级分组方式理解(转)

    源:http://blog.chinaunix.net/uid-22670933-id-3443085.html STM32有43个channel的settable的中断源:AIRC(Applicat ...

  4. CG中的数据变量类型

    CG 中的数据变量类型有三: float:高精度浮点值,通常是32位. half:中精度浮点值.通常是16位,范围是-60000至+60000,它适合存储UV坐标,颜色值等. fixed:低精度浮点值 ...

  5. Document Classification

    Natural Language Processing with Python Chapter 6.1 由于nltk.FreqDist的排序问题,获取电影文本特征词的代码有些微改动. import n ...

  6. shell字符串操作之cut---实现字符串截取

    shell中(字符串截取) cut是以每一行为一个处理对象的,这种机制和sed是一样的.(关于sed的入门文章将在近期发布) 2 cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切 ...

  7. Delphi 中Format的字符串格式化使用说明(转)

    源:Delphi 中Format的字符串格式化使用说明(转) 一.Format函数的用法 Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供 ...

  8. mysql数据库中间件研究

    随着互联网的发展,数据量的不断增大. 单台实例已经远远无法满足业务的需要. 对数据库分库分表的需求不断的增加随之而来的就是数据库中间件的开发. 一. 单台实例主要面临下面几个问题: 1.  数据量太大 ...

  9. iOS开发——Reachability和AFNetworking判断网络连接状态

    一.Reachability // 监听网络状态改变的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selec ...

  10. sqlserver 批量删除相同前缀名的表

    ) DECLARE tmpCur CURSOR FOR SELECT name FROM sys.objects WHERE TYPE='U' AND name LIKE N'HSUPA%' OPEN ...