Java———反射机制
来源:互联网 发布:电脑怎么用手机淘宝 编辑:程序博客网 时间:2024/05/16 08:00
反射机制:
所谓“反”就是根据对象来取得对象的来源信息,而这个反的核心操作 便是取得Class对象
Class类 是描述整个类的概念,是整个反射操作的核心
Class类对象的获得 有三种方法:
1) 对象.getClass(); //需要实例化对象
2) 类.class //需要导入类的包
3) Class.forName("包.类") 例如:Class.forName("java.util.Date")
获得Class类对象的以后
可以实例化对象:
Class clazz=Class.forName("java.util.Date");
Object obj=clazz.newInstance();
可以获取父类Class类对象
clazz.getSuperclass()
可以获取构造器
Constructor<?> cons[]=clazz.getConstructors();
可以调用方法(核心)
反射调用方法一般分为3个步骤:
- 得到要调用类的class
- 得到要调用的类中的方法(Method)
- 方法调用(invoke)
package demo;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;class Person{int age;String name;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Person(){}public Person(int age, String name) {super();this.age = age;this.name = name;};}public class Fanshe {public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException {try {Class clazz=Class.forName("demo.Person");Object obj=clazz.newInstance();@SuppressWarnings("unchecked")Method m1=clazz.getMethod("setName", String.class);Method m2=clazz.getMethod("getName");m1.invoke(obj, "hha");String st=(String) m2.invoke(obj);System.out.println(st);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
可以调用成员:
package demo;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;class Person{private int age;private String name;}public class Fanshe {public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException, NoSuchFieldException {try {Class clazz=Class.forName("demo.Person");Object obj=clazz.newInstance();Field field1=clazz.getDeclaredField("age");Field field2=clazz.getDeclaredField("name");field1.setAccessible(true);field2.setAccessible(true);System.out.println(field1);System.out.println(field2);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
阅读全文
0 0
- Java—反射机制
- JAVA——反射机制
- java——反射机制
- Java——反射机制
- java原理—反射机制
- Java基础—反射机制
- java原理—反射机制
- Java学习—— Java反射机制
- java基础知识—Java中的反射机制
- Java反射机制——反射的介绍(一)
- Java———反射机制
- java之反射机制——invoke。
- java反射机制——解析
- JAVA加强——反射机制
- 黑马程序员——Java 反射机制
- JAVA高新技术——反射机制Reflection
- 黑马程序员——-Java反射机制-
- 黑马程序员——java反射机制
- 谈一谈神奇的ShadowDOM
- 从原理角度解析Android (Java) http 文件上传
- 搭建 Python 开发环境
- Socket加入多线程通信实现简单的CS聊天室
- CSDN 人工智能发展动态在线学习笔记
- Java———反射机制
- Android动画学习(一)之动画概述和帧动画实现
- 带权并查集:CF-2015 ACM Arabella Collegiate Programming Contest(F题)
- Android Media(多媒体)播放Module raw下的音乐
- POJ 2431 Expedition
- C++ Socket编程步骤
- 新手上路 js 之 this关键字 代码笔记
- Linux系统安装MySQL
- springmvc上传文件的三种方式