链接:
http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html
package com.stono.reftest; 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(); } } class Glyph implements icon { public Glyph() { } } interface icon { }
时间: 2024-10-08 04:03:43