Java反射机制概念及构造方法的反射
来源:互联网 发布:百词斩和知米哪个好 编辑:程序博客网 时间:2024/05/01 04:41
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有构造方法、属性、及成员方法,任意一个对象都能够调用它的任意一个方法,这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制的主要功能是:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量、方法、构造方法、包等等信息也用一个个Java类来表示。就像汽车是一个类,汽车的发动机,变速箱等等也是一个个类。当然,类中的变量、方法、构造函数包等等都可以分别用一个类来表示。其中:
变量对应的类为Field;
方法对应的类为Method;
构造函数对应的类为Constructor;
包对应的类为Package;
Constructor类 : 代表某个类中的一个构造方法。
得到某个类所有的构造方法:
例:Constructor constructors[] = Class.forName("java.lang.String").getConstructors();
得到某一个构造方法(StringBuffer.class表示要得到的构造方法的参数类型,由此来判断要获取的构造方法):
例:Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);
创建实例对象【利用Class.newInstance(...)】:
通常情况下:String str = new String(new StringBuffer("abc"));
利用反射:String str = (Stirng)constructor.newInstance(new StringBuffer("abc"));
public class ConstructorTest {public static void main(String[] args) throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {/*获取String类中参数类型为StringBuffer的构造函数*/Constructor constructor = String.class.getConstructor(StringBuffer.class);/*通过构造函数创建一个String类的实例对象【之所以要强转是因为程序编译阶段并不知道上一句代码获取的是String类的构造函数】*/String str = (String) constructor.newInstance(new StringBuffer("abc"));System.out.println(str.charAt(2));}}
例子:String obj = (String) Class.forName("java.lang.String").newInstance();表示先得到默认的构造函数,然后利用该构造函数来创建实例对象。
- Java反射机制概念及构造方法的反射
- Java反射概念及类的反射
- Java反射-------构造方法的反射应用
- [Java]反射机制及构造对象
- Java反射机制概念
- JAVA 采用反射机制 获取构造方法
- Java反射机制(得到所有的构造方法)
- 如何使用Java的反射机制以及调用构造方法?
- Java反射机制之获得构造函数的方法
- 构造方法类的反射机制
- java反射机制 以及通过反射获得类的变量字段,方法,构造函数
- java反射机制 以及通过反射获得类的变量字段,方法,构造函数
- 【Java】 Java的反射机制概述及方法介绍
- JAVA的反射机制及代理机制
- 反射的概念及在Java中的类反射
- java反射机制基础概念
- (Java基础--反射)构造方法的反射应用
- java反射---获取类的构造方法
- 对linux 0.11版本内核的kill系统调用的理解
- 记第五届ACM省赛总结—----没有努力,最终只能是悲剧
- POJ 2046 Gap(BFS+hash判重)
- C++中的vector使用范例
- django 登录与登出
- Java反射机制概念及构造方法的反射
- [Android]-图片JNI(C++)高斯模糊的实现与比较
- 交叉编译opencv
- centos 5 yum安装与配置vsFTPd FTP服务器
- python 学习札记(4)
- 重温世界杯 杭电1422 最长串和
- 键盘上附加个textField
- Eclipse使用技巧
- 附件迁移:本地附件迁移教程,远程本地附件随时转换