JAVA反射机制
来源:互联网 发布:什么是网络综艺节目 编辑:程序博客网 时间:2024/06/06 12:45
反射机制是什么?
反射机制是在运行状态中们对于任意个一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
反射机制能做什么?
- 在运行时判断任意一个对象所属的类
- 在运行时构造任意一个类的对象;
- 在运行时判断任意一个类所具有的成员变量和方法
- 在运行时调用任意一个对象的方法
- 生成动态代理
反射机制相关API
通过对象获得完整的包名和类名
package net.xsoftlab.baike;public class TestReflect { public static void main(String[] args) throws Exception { TestReflect testReflect = new TestReflect(); System.out.println(testReflect.getClass().getName()); // 结果 net.xsoftlab.baike.TestReflect }}
实例化class类对象
package net.xsoftlab.baike;public class TestReflect { public static void main(String[] args) throws Exception { Class<?> class1 = null; Class<?> class2 = null; Class<?> class3 = null; // 一般采用这种形式 class1 = Class.forName("net.xsoftlab.baike.TestReflect"); class2 = new TestReflect().getClass(); class3 = TestReflect.class; System.out.println("类名称 " + class1.getName()); System.out.println("类名称 " + class2.getName()); System.out.println("类名称 " + class3.getName()); }}
获取一个对象的父类与实现接口
package net.xsoftlab.baike;import java.io.Serializable;public class TestReflect implements Serializable { private static final long serialVersionUID = -2862585049955236662L; public static void main(String[] args) throws Exception { Class<?> clazz = Class.forName("net.xsoftlab.baike.TestReflect"); // 取得父类 Class<?> parentClass = clazz.getSuperclass(); System.out.println("clazz的父类为:" + parentClass.getName()); // clazz的父类为: java.lang.Object // 获取所有的接口 Class<?> intes[] = clazz.getInterfaces(); System.out.println("clazz实现的接口有:"); for (int i = 0; i < intes.length; i++) { System.out.println((i + 1) + ":" + intes[i].getName()); } // clazz实现的接口有: // 1:java.io.Serializable }}
阅读全文
0 0
- 【反射】JAVA反射机制
- 【Java】JAVA反射机制
- Java 反射机制[Field反射]
- Java 反射机制[Method反射]
- Java反射机制笔记-反射机制
- java的反射机制
- Java的反射机制
- java反射机制详解!
- Java反射机制
- Java的反射机制
- java 反射机制--侯捷
- java反射机制
- java反射机制
- [候捷]Java反射机制
- java 反射机制
- java 反射机制初探
- 关于Java反射机制
- java反射机制
- [LeetCode198 House Robber]数组中的动态规划求最值问题
- ThreadLocal理解
- Spring+Log4J.xml在web中的使用方法
- redis安装
- git更新和删除文件代码
- JAVA反射机制
- 忽来灵感,谈谈对java的理解
- 做一个程序媛
- OpenCV自学笔记1:Pycharm + OpenCV3 + Python3 配置记录
- Web基础之Cookie对象与Session对象(二)
- linux编译安装rabbitmq-c & 编译PHP扩展amqp
- vc6/vs2010设置头文件和lib库路径的两种方法
- 多线程多进程服务器与进程线程池
- jilushiyong