链接:

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. 安卓图表引擎AChartEngine(四) - 源码示例 嵌入Acitivity中的折线图

    前面几篇博客中都是调用ChartFactory.get***Intent()方法,本节讲的内容调用ChartFactory.get***View()方法,这个方法调用的结果可以嵌入到任何一个Activ ...

  2. Android音频系统之AudioPolicyService

    地址:http://blog.csdn.net/edmond999/article/details/18599327 1.1 AudioPolicy Service 在AudioFlinger小节,我 ...

  3. Wiegand协议(转)

    源:http://blog.chinaunix.net/uid-22670933-id-3268318.html Wiegand26协议是由美国工业安全委员会SIA(Security Industry ...

  4. 把中文版NetBeans改成英文版

    不管你从官网下的是英文版还是中文版,安装之后操作界面都是中文的.这是因为NetBeans会根据你的操作系统自动设置界面语言,并且没有提供更改的功能.解决的方法也很简单,下面介绍我用过的两种方法: 方法 ...

  5. Naive Bayes在mapreduce上的实现

    Naive Bayes是比较常用的分类器,因为思想比较简单.之所以说是naive,是因为他假设用于分类的特征在类确定的条件下是条件独立的,这个假设使得分类变得很简单,但会损失一定的精度. 具体推导可以 ...

  6. mustache.js基本使用(一)

    作者:zccst 模板已是第二次接触,第一次使用模板记得是在十分系统里渲染页面时使用,当时已做到熟练使用,但实际上仍不知道原因. 再次学习模板已不是从0开始,所以还算顺手,但毕竟还只限于使用,今天继续 ...

  7. Mysql中Insert into xxx on duplicate key update问题

    要点:Insert into xxx on duplicate key update可以在唯一索引重复的情况下,进行更新操作.           (1) 插入里边的字段应该只有一个 唯一索引:   ...

  8. iOS开发——点击图片全屏显示

    点击图片,全屏显示,然后再点击屏幕一下,返回. 没啥难的,直接上代码: // //  ViewController.m //  Demo-hehe // //  Created by yyt on 1 ...

  9. JS数字金额大写转换

    /** 数字金额大写转换(可以处理整数,小数,负数) */ var digitUppercase = function(n) { var fraction = ['角', '分']; var digi ...

  10. ASP.NET脚本过滤-防止跨站脚本攻击[转]

    ASP.Net 1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力.当用户试图用<xxxx>之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一个HttpReq ...