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);
}
}
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);
}
}
相关文章推荐
- java再复习——通过反射使用类的属性,方法和构造器
- java再复习——通过反射获取到方法的参数和返回值的泛型类型
- 反射机制_介绍_Class对象获取_动态操作_构造器_方法_属性JAVA211-212
- java 通过反射获取调用类方法及属性
- Java---通过属性名反射获取get和set方法
- java 通过反射获取调用类方法及属性
- Java反射获取属性、方法、构造器
- java 通过反射获取调用类方法及属性
- java反射(3)获取Class对象属性方法和构造器
- 通过java类的反射机制获取类的属性类型
- Java 使用反射获取类、方法、属性上的注释
- JAVA反射获取类名,方法名,属性及构造方法
- java 通过反射获得类的属性和调用方法
- 测试 java反射Reflection中 获取 类属性、方法、构造方法及 调用类方法改变 对象属性
- Java反射获取对象VO的属性值(通过Getter方法)
- 通过反射获取方法,属性
- java中通过反射获取方法并且调用(getMethod和invoke深入)实践
- 通过反射获取类的所有属性和方法
- Java中用反射的方式获取类中的所有属性和方法,以及获取属性的默认值,设置属性的默认值
- Java通过反射来获取类的私有构造方法和成员方法