链接:

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. base库插件---form

    $().extend('serialize', function () { for (var i = 0; i < this.elements.length; i ++) { var form ...

  2. zookeeper启动失败

    集群中3个节点,第一个started,第二个说Starting zookeeper ... already running as process xxxx,第三个说Starting zookeeper ...

  3. FIR数字滤波器的设计要点

    源:http://blog.sina.com.cn/s/blog_493520900101gt0a.html FIR数字滤波器的设计要点

  4. ural1523 K-inversions

    K-inversions Time limit: 1.0 secondMemory limit: 64 MB Consider a permutation a1, a2, …, an (all ai  ...

  5. python第一天(文件流以及控制流)简单总结

    第一天的python学习主要是: (1)对python的一个大致了解 值得注意的是在window下开发要注意path的问题. (2)对python控制流的一个了解 常用的if ,while ,for ...

  6. sublime text3 Emmet (原zenCoding)安装方法

    1.安装使用Package Control组件安装 (1)打开控制台 (mac)control+`; (win)ctrl+` (2)复制一下代码并回车 import urllib.request,os ...

  7. Ubuntu 12.04下PHP环境的搭建(LAMP)

    1.首先打开命令行,切换到root身份,获得最新的软件包 su root sudo apt-get install update 2.安装MySQL数据库 sudo apt-get install m ...

  8. Android线程之异步消息处理机制(二)——Message、Handler、MessageQueue和Looper

    异步消息处理机制解析 Android中的异步消息处理主要有四个部分组成,Message.Handler.MessageQueue和Looper. 1.Message Message是在线程之间传递的消 ...

  9. iOS开发——Scheme白名单

    问题:在iOS 9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme.对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端. 报错:This app is ...

  10. Xcode的版本问题

    1. 已经安装了Xcode6,如何再安装Xcode5,并使两者共存? 2. Xcode6升级到Xcode7 适配问题 3. XCODE6中使用iOS7 SDK的方法: 从XCODE 5的目录中: /A ...