通过Class,可以得到一个类的一些属性。
测试代码:
package com.clazz;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Calendar;
import java.util.HashMap;
import junit.framework.TestCase;
public class TestClass extends TestCase {
public void testgetDeclaredMethods() {
Method[] methods = String.class.getDeclaredMethods();
for (Method m : methods) {
System.out.println(m);
}
}
public void testgetMethods() {
Method[] methods = String.class.getMethods();
for (Method m : methods) {
System.out.println(m);
}
}
public void testgetDeclaredConstructors() {
Constructor<?>[] cons = String.class.getDeclaredConstructors();
for (Constructor<?> con : cons) {
System.out.println(con);
}
}
public void testgetConstructors() {
Constructor<?>[] cons = String.class.getConstructors();
for (Constructor<?> con : cons) {
System.out.println(con);
}
}
public void testgetClasses() {
Class<?>[] classes = HashMap.class.getClasses();
for (Class<?> clazz : classes) {
System.out.println(clazz);
}
}
public void testgetDeclaredClasses() {
Class<?>[] classes = HashMap.class.getDeclaredClasses();
for (Class<?> clazz : classes) {
System.out.println(clazz);
}
}
public void testgetFields() {
Field[] fields = Calendar.class.getFields();
for (Field field : fields) {
System.out.println(field);
}
}
public void testgetDeclaredFields() {
Field[] fields = Calendar.class.getDeclaredFields();
for (Field field : fields) {
System.out.println(field);
}
}
}
getDeclaredMethods和getMethods的区别:
getDeclaredMethods得到该类所有的方法,除去父类的。
getMethods得到该类及其父类所有的public方法。
getDeclaredConstructors和getConstructors的区别:
getDeclaredConstructors得到该类所有的构造方法。
getConstructors得到该类所有的public的构造方法。
getClasses和getDeclaredClasses的区别:
getClasses得到该类及其父类所有的public的内部类。
getDeclaredClasses得到该类所有的内部类,除去父类的。
getFields和getDeclaredFields的区别:
getFields得到该类及其父类所有的public的成员变量。
getDeclaredFields得到该类所有的成员变量,除去父类的。