- 浏览: 271059 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
tonytony3:
THANK YOU
Android多级树形菜单的实现 -
haiyang08101:
deleteNumber = "421f481e-7 ...
java对xml文件做增删改查 -
求求你帮帮我:
怎么把我的空格也当成节点处理了?
java对xml文件做增删改查 -
求求你帮帮我:
deleteNumber = "421f481e-7 ...
java对xml文件做增删改查 -
lpj13579:
多谢分享,学习学习
高仿小米盒子UI效果实现
JAVA语言中的反射机制:
在Java 运行时 环境中,对于任意一个类,能否知道这个类有哪些属性和方法?
对于任意一个对象,能否调用他的方法?这些答案是肯定的,这种动态获取类的信息,以及动态调用类的方法的功能来源于JAVA的反射。从而使java具有动态语言的特性。
JAVA反射机制主要提供了以下功能:
1.在运行时判断任意一个对象所属的类
2.在运行时构造任意一个类的对象
3.在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法)
4.在运行时调用任意一个对象的方法(*****注意:前提都是在运行时,而不是在编译时)
Java 反射相关的API简介:
位于java。lang。reflect包中
--Class类:代表一个类
--Filed类:代表类的成员变量
--Method类:代表类的方法
--Constructor类:代表类的构造方法
--Array类:提供了动态创建数组,以及访问数组的元素的静态方法。该类中的所有方法都是静态方法
----Class类
在 java 的Object类中的申明了数个应该在所有的java类中被改写的methods:
hashCode(), equals(),clone(),toString(),getClass()等,其中的getClass()返回yige
Class 类型的对象。
Class类十分的特殊,它和一般的类一样继承自Object,其实体用以表达java程序运行
时的 class和 interface,也用来表达 enum,array,primitive,Java Types 以及关键字void
,当加载一个类,或者当加载器(class loader)的defineClass()被JVM调用,便产生一个Class
对象,
Class是Reflection起源,针对任何你想探勘的class(类),唯有现为他产生一个Class
的对象,接下来才能经由后者唤起为数十多个的反射API。
Java允许我们从多种途径为一个类class生成对应的Class对象。
--运用 getClass():Object类中的方法,每个类都拥有此方法
String str="abc";
Class cl=str.getClass();
--运用 Class。getSuperclass():Class类中的方法,返回该Class的父类的Class
--运用 Class。forName()静态方法:
--运用 ,Class:类名.class
--运用primitive wrapper classes的TYPE语法: 基本类型包装类的TYPE,如:Integer.TYPE
注意:TYPE的使用,只适合原生(基本)数据类型
----运行时生成instance
想生成对象的实体,在反射动态机制中有两种方法,一个针对无变量的构造方法,一个针对带参数的
构造方法,,如果想调用带参数的构造方法,就比较的麻烦,不能直接调用Class类中的newInstance()
,而是调用Constructor类中newInstance()方法,首先准备一个Class[]作为Constructor的参数类型。
然后调用该Class对象的getConstructor()方法获得一个专属的Constructor的对象,最后再准备一个
Object[]作为Constructor对象昂的newInstance()方法的实参。
在这里需要说明的是 只有两个类拥有newInstance()方法,分别是Class类和Constructor类
Class类中的newInstance()方法是不带参数的,而Constructro类中的newInstance()方法是带参数的
需要提供必要的参数。
例:
Class c=Class.forName("DynTest");
Class[] ptype=new Class[]{double.class,int.class};
Constructor ctor=c.getConstructor(ptypr);
Object[] obj=new Object[]{new Double(3.1415),new Integer(123)};
Object object=ctor.newInstance(obj);
System.out.println(object);
----运行时调用Method
这个动作首先准备一个Class[]{}作为getMethod(String name,Class[])方法的参数类型,接下来准备一个
Obeject[]放置自变量,然后调用Method对象的invoke(Object obj,Object[])方法。
注意,在这里调用
----运行时调用Field内容
变更Field不需要参数和自变量,首先调用Class的getField()并指定field名称,获得特定的Field对象后
便可以直接调用Field的 get(Object obj)和set(Object obj,Object value)方法
发表评论
-
Android 三大图片加载框架比较
2016-11-30 10:31 10781.哪三大图片加载框架? 1) Pi ... -
Java Calendar 类的时间操作
2016-06-01 21:02 661ava Calendar 类时间操作,这也许是创建日历和管理 ... -
获取电脑ip,所在省份城市
2014-08-27 09:45 676调用了腾讯的ip接口(http://fw.qq.com ... -
获取Android签名证书的sha1值
2014-08-23 23:14 657前言:今天开始研 ... -
java中Keytool的使用总结
2014-08-23 22:40 557J2SDK提供了keytool命令行工具,可以根据指定的参数 ... -
Java基础——Java语法基础(3)
2014-06-19 10:13 565程序控制流程 1、顺序结构 按顺序执行 2、i ... -
Java基础——Java语法基础(1)
2014-06-19 10:11 796Java代码基本格式 Java ... -
android MD5校验码的生成与算法实现
2014-06-17 10:58 880在Java中,java.security.Mes ... -
java中的字符串分割函数 split
2014-06-06 15:01 688Java中的我们可以利用sp ... -
java对xml文件做增删改查
2014-06-04 20:40 1834package com.wss; import jav ... -
获取网络的json文件 Gson解析json文件
2013-11-07 16:21 522/** * 获取网络的json文件 * @pa ... -
Java获取文件类型Mime Type的各种方法
2013-09-16 15:46 1138使用 javax.activation.MimetypesF ... -
Java栈与堆
2013-06-20 22:18 9191. 栈(stack)与堆(heap)都 ... -
Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead.
2013-05-02 12:01 692解决Android requires compiler co ... -
java创建文件和目录
2013-04-25 10:30 599创建文件和目录的关键技术点如下: 1、File类的cr ... -
iava创建文件和目录
2013-04-24 19:42 792创建文件和目录的关键技术点如下: 1、File类的cr ... -
Java程序发送邮件的两种方法
2013-01-25 10:57 1867前一段时间我在博客中发表过Java接收解析邮件的程序 ... -
SharedPreferences保存数据
2013-01-24 15:09 882package com.test; import ja ... -
java 把logcat日志保存到SD里
2013-01-22 20:21 1029private void saveLogcat(){ ... -
Android开发系列:查看LogCat日志
2013-01-19 13:06 3441LogCat日志 1. Window & ...
相关推荐
Java反射机制是Java编程语言中一个强大的工具,它允许程序在运行时动态地获取类的信息并操作类的对象。反射机制的核心在于java.lang.reflect包中的API,主要包括Class类、Constructor类、Method类和Field类。以下是...
Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、对象、字段和方法。在本教程中,我们将深入探讨Java反射机制的核心概念、功能、API以及应用场景。 **3.1 应用场景** 反射机制在...
### JAVA反射机制详解 #### 反射机制简介 在Java编程语言中,反射是一种非常强大的功能,它允许程序在运行时动态地获取类的信息并直接操作这些类的对象。这一特性极大地提高了程序的灵活性和可扩展性。根据描述,...
13. **反射与注解**:介绍反射机制,如何动态获取和操作类、对象、方法的信息,以及注解的使用和自定义。 14. **Java高级特性**:包括Lambda表达式,Stream API,Optional类,以及Java 8之后的新特性。 此外,教程...
通常,动态语言如Java和Python内置了反射机制,但C++作为静态类型语言,其标准库并没有提供直接的支持。然而,通过一些技巧和第三方库,我们可以在C++中实现类似的功能。 ### C++反射基础 C++17引入了`std::any`和...
这一部分通常包括Java语言的基础语法,如变量、数据类型、运算符、流程控制(if语句、switch、for、while循环等)、类与对象的创建、封装、继承、多态等。Java是一种静态类型的、面向对象的语言,它的强类型系统...
**三、反射小结与进阶操作** 3.1 对于类加载器、构造器、Method、Field的进阶操作,包括: - 类加载器操作:如自定义类加载器,控制类的加载过程。 - 构造器操作:可以获取私有构造器并创建对象。 - Method操作:...
1.1 Java语言的发展简史 2 1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6 1.3.2 Java程序的...
附录B Java语言的反射机制 B.1 Java Reflection API简介 B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件 C.1 创建带有@hibernate标记的Java源文件 C.2 建立项目的目录结构 C.3 ...
每章节都可能包含实例、练习和小结,帮助你在实践中掌握知识。在学习过程中,记得动手实践,编写代码,因为实践是检验理解的最好方式。此外,不断查阅官方文档和权威教程,结合其他资源,将使你的Java学习之路更加...
- **反射机制**:反射的原理及其在开发中的作用。 ### 第三本书:《Thinking in Java》(《Java编程思想》) #### 知识点概述 - **面向对象思想**:深入讲解面向对象的核心思想,如抽象、封装等。 - **泛型与集合*...
UML表示法小结中包括类图、顺序图、活动图和状态图,这些是理解面向对象设计的基础工具。而面向对象设计模式则是软件工程中解决特定问题的模板或通用解决方案。 在Java程序设计基础篇中,介绍了Java的基本概念,...
3.7.6 循环语句小结78 3.7.7 break语句79 3.7.8 continue语句82 3.8 JavaDebug技术84 3.9 本章练习85 第4章 4.1 一维数组90 4.1.1 为什么要使用数组90 4.1.2 什么是数组91 4.1.3 如何使用数组92 4.1.4 经验之谈-数组...
10.3.2 Java语言中的各种布局管理器 10.4 小结 第11章 秒表(事件+线程) 11.1 秒表原理 11.1.1 项目结构框架分析 11.1.2 项目功能业务分析 11.2 秒表的实现过程 11.2.1 秒表类 11.2.2 测试秒表的类 11.3 知识点扩展...
附录B Java语言的反射机制 B.1 Java Reflection API简介 B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件 C.1 创建带有@hibernate标记的Java源文件 C.2 建立项目的目录结构 C.3 ...
附录B Java语言的反射机制 B.1 Java Reflection API简介 B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件 C.1 创建带有@hibernate标记的Java源文件 C.2 建立项目的目录结构 C.3 ...
附录B Java语言的反射机制 B.1 Java Reflection API简介 B.2 运用反射机制来持久化Java对象 附录C 用XDoclet工具生成映射文件 C.1 创建带有@hibernate标记的Java源文件 C.2 建立项目的目录结构 C.3 ...
理解其生成方式及其内部机制对于深入学习Java语言至关重要。无论是进行反射操作还是进行类的信息查询,`Class`对象都是不可或缺的一部分。掌握这些知识点有助于提高Java开发人员的技术水平,并为更高级的应用场景...
Java 反射机制是 Java 语言中一个强大的功能,它允许开发者在运行时检查和修改类的结构和行为。通过反射机制,可以在运行时检查类的成员变量和方法,并且可以动态地创建类和对象。 二、创建动态类 在 Java 中,...