java再复习——通过反射使用类的属性,方法和构造器
2017-02-28 19:36
525 查看
知道了如何获取到类的属性,方法和构造器,那么就应该开始使用了。
public class ReflectDemo {
public static void main(String[] args) throws Exception{
//加载类
Class<Student> clazz = Student.class;
//取得无参构造函数
Constructor<Student> declaredConstructor = clazz.getDeclaredConstructor(null);
//创建对象,注意这个方法是newInstance
Student newInstance = declaredConstructor.newInstance(null);
System.out.println(newInstance);
//取得属性
Field declaredField = clazz.getDeclaredField("name");
//去掉安全检查 ,因为如果是private的 则无法访问到,而且去掉安全检查会使的反射效率大大提高
declaredField.setAccessible(true);
/**
* 给属性赋值
* 第一个参数为对象:必须有对象
* 第二个参数为值
*/
declaredField.set(newInstance, "fuck");
//取值
System.out.println(declaredField.get(newInstance));
//取得方法
Method declaredMethod = clazz.getDeclaredMethod("getName", null);
/**
* 调用方法
* 第一个参数为对象
* 第二个参数为方法参数列表
*/
Object invoke = declaredMethod.invoke(newInstance, null);
System.out.println(invoke);
}
}
public class ReflectDemo {
public static void main(String[] args) throws Exception{
//加载类
Class<Student> clazz = Student.class;
//取得无参构造函数
Constructor<Student> declaredConstructor = clazz.getDeclaredConstructor(null);
//创建对象,注意这个方法是newInstance
Student newInstance = declaredConstructor.newInstance(null);
System.out.println(newInstance);
//取得属性
Field declaredField = clazz.getDeclaredField("name");
//去掉安全检查 ,因为如果是private的 则无法访问到,而且去掉安全检查会使的反射效率大大提高
declaredField.setAccessible(true);
/**
* 给属性赋值
* 第一个参数为对象:必须有对象
* 第二个参数为值
*/
declaredField.set(newInstance, "fuck");
//取值
System.out.println(declaredField.get(newInstance));
//取得方法
Method declaredMethod = clazz.getDeclaredMethod("getName", null);
/**
* 调用方法
* 第一个参数为对象
* 第二个参数为方法参数列表
*/
Object invoke = declaredMethod.invoke(newInstance, null);
System.out.println(invoke);
}
}
相关文章推荐
- java再复习——通过反射获取类的名字,属性,方法,构造器
- java基础之通过反射获得和使用类的字段、方法、构造器,等
- java 通过反射机制得到类的属性和方法
- Android(java)学习笔记109:通过反射获取成员变量和成员方法并且使用
- java 通过反射获取调用类方法及属性
- java 通过反射获取调用类方法及属性
- Java通过反射调用其他类的私有属性和私有方法
- [Effective Java Distilled] Item 3 通过使用私有构造方法或者枚举类型来强化单例属性
- Java通过反射机制动态设置对象属性值的方法
- java再复习——通过反射获取到方法的参数和返回值的泛型类型
- [java]反射机制给属性使用set方法构造对象
- Java中通过注解+反射拿到对象的属性和方法
- [Effective Java Distilled] Item 3 通过使用私有构造方法或者枚举类型来强化单例属性
- Java的动态性支持学习三 - 反射机制 取消属性、方法、构造器的访问限制
- Java反射获取属性、方法、构造器
- java使用反射给对象属性赋值的两种方法
- Android(java)学习笔记108:通过反射获取私有构造方法并且使用
- java 通过反射获得类的属性和调用方法
- Android(java)学习笔记107-0:通过反射获得构造方法并且使用
- java反射基本使用(得到类中属性、方法、构造方法)