链接:

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. H2Database高级特性

    http://wenku.baidu.com/link?url=mcSOmh5PRsKGO1kXzXqzZVjVPYR5sOWK_KIjw8qdpGHAkZsbWiK71lE9ToYwxLvJwL7b ...

  2. grep过滤搜索

    cat /proc/2666/maps | busybox grep libumcpart.so

  3. python之requests模块

    1.安装 pip install requests 2.基本用法 就是以某种HTTP方法向远端服务器发送一个请求而已 import requests r = requests.get('https:/ ...

  4. PHP处理多表查询时的SQL语句拆分与重新组装

    在自己写框架时候会发现,多表查询组装SQL语句<?php $pre = "pre_"; $aid = "44"; $data = array(" ...

  5. Content Provider 小结

    Android中的四大组件之一ContentProvider,它支持多个应用间进行存储和读取数据等操作,实现不同应用间的数据共享. ContentProvider,解释为内容提供商.顾名思义,就是对外 ...

  6. 修改Linux系统语言

    ====[root@lichao520 yum.repos.d]# localeLANG=en_US.UTF-8LC_CTYPE="en_US.UTF-8"LC_NUMERIC=& ...

  7. kafka第四篇--快速入门(如何使用kafka)

    Quick Start Step 1: Download the code Download the 0.8 release. > tar xzf kafka-<VERSION>.t ...

  8. iOS9新特性-3D Touch

    本文主要讲解3DTouch各种场景下的开发方法,开发主屏幕应用icon上的快捷选项标签(Home Screen Quick Actions),静态设置 UIApplicationShortcutIte ...

  9. 设计模式笔记之四:MVP+Retrofit+RxJava组合使用

    本博客转自郭霖公众号:http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650236866&idx=1&sn=da66 ...

  10. CSS3样式linear-gradient的使用(切角效果)

    linear-gradient linear-gradient是CSS3中新增的样式,主要用于颜色的渐变效果.MDN地址 linear-gradient在不同内核下使用方式不同,详细内容可参考w3cp ...