您的位置:首页 > 编程语言 > Java开发

java再复习——通过反射获取类的名字,属性,方法,构造器

2017-02-28 17:51 555 查看
熟练的使用反射的API,才可以熟练的写框架,不会语法,如何写句子?

public class ReflectTest {

public static void main(String[] args) throws Exception {
//加载类
Class<Student> clazz = (Class<Student>) Class.forName("Student");
//获取类名
System.out.println(clazz.getSimpleName()); //获取类的名字
System.out.println(clazz.getName()); //类的全路径名字

/**
* 获取类的所有声明属性
* 与getFields方法的区别是:getFields方法只能获取到public权限的,以后的获取方法,构造函数等都与此类似
*/
Field[] declaredFields = clazz.getDeclaredFields();
for (Field field : declaredFields) {
System.out.println("属性-" + field.getName());
}
//获取指定名字的属性
Field field = clazz.getDeclaredField("name");
System.out.println(field);

/**
* 获取方法
*/
Method[] declaredMethods = clazz.getDeclaredMethods();
for (Method method : declaredMethods) {
System.out.println(method);
}
/**
* 获取制定名字的方法
* 第二个参数为可变长参数,对应方法的参数列表(没有的话就null)
*/
Method declaredMethod = clazz.getDeclaredMethod("setName", String.class);
System.out.println(declaredMethod);

/**
* 获取类的构造方法
*/
Constructor<Student>[] declaredConstructors = (Constructor<Student>[]) clazz.getDeclaredConstructors();
for (Constructor<Student> constructor : declaredConstructors) {
System.out.println(constructor);
}

/**
* 获取制定名字的构造方法
*/
Constructor<Student> declaredConstructor = clazz.getDeclaredConstructor(null);
System.out.println(declaredConstructor);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: