我对反射和代理的理解(1)

Java中的反射与JDK动态代理 目录反射的概述反射的概念反射的前提 反射的概述 反射的概念 Java 反射机制是在 运行状态 中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制 反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释。一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作 Apple apple = new Ap 阅读详情

 

至于反射和代理的定义以及它们所带来的好处,我就不多说了,这方面的资料网上很多,想了解的朋友,可以自己查.
   我还是从实用角度出发,来谈谈反射和代理的一些相关知识.
 
一 反射(reflect)
    java的反射是通过反射API来实现的,也就是说在java JDK中提供了一个反射类reflect,它位于java.lang.reflect包中.
    在学习和理解reflect时,一定要尽量理解”万事万物皆对象”的含义,以及对面向对象编程思想有一定了解.
    首先灌输一个思想:
现实生活中有形或无形的事物,甚至一种思想或者概念都可以抽象以后用一个java类来描述。不可否认的是,Java语言JDK中提供的类我们也同样可以把它们理解为一种事物,既然它们是事物,那它们也可以被抽象之后用另外的Java类描述,这个特殊的类名就叫做Class(呵呵,这个思想还是比较抽象,尽量去理解吧,能够理解一个大概也就可以了,通过以后的实践,你一定会有更大的收获)。
接下来举个例子:      public class Student{}
这一句我想应该所有人都可以看的懂,否则你就不要学反射和代理了,还是回去先学学java基础吧.
   上面这个例子定义了一个名字为”Student”的类,也就是说,有一群学生,尽管他们的年龄,性别,身高,体重等属性不相同,可他们还是有一些相同的属性可以被我们用一个类来描述.那接下来我要做的就是抽象这些学生,然后就可以定义一个名为”Student”的类了,这个名为”Student”和”学生”相对应,再说的专业一些:”Student”就是对这些”学生”的抽象.好了,理解了”Student”类的抽象和描述过程,那我现在的问题就是在javaJDK中提供的那些类,比如说:INTEGER类,String类,Boolean类等等,我们有没有办法把它们抽象以后用一个类来描述呢?我们知道这些类就像每一个学生个体,虽然它们有很多属性并不相同,可我们还是可以找到一些它们共同具有的属性,通过抽象用一个类来描述它们.这个类是……
哈哈,我想心细的朋友应该早已经看到答案了.对,就是你看到的,我们用来描述java JDK中提供的类就是这种特殊的类”Class”,这个”Class”与”Student”的意义相同,它们各自描述不同的东西.
 
上面的思想比较难以理解,如果理解了,那下面的思想就容易多了.下面就是反射的知识了,当然看下面这些文章之前,你一定要先了解,什么是反射,它有什么作用,否则你会认为反射真是无聊透顶,又复杂又不实用.好了,废话不多说,开说:
首先给出四种获取Class实例的方法:
(1)使用getClass()方法获取Class类的实例.例如:str是一个String类的一个实例:
 Class cls=str.getClass();
(2)知道类名,使用”类名.class”形式来获取Class类的实例.
 
Class cls=String.class; 
Class cls=Integer.TYPE;    //等效于int.class
(3)知道子类,使用getSuperclass方法从子类获取Class实例:
 Class subCls=String.class;
 Class superCls=subCls.getSuperclass();
(4)使用Class类的静态方法forName(String className)来获取某个类的Class实例:
 Class cls=Class.forName(“java.lang.String”)
     注意:传递进来的参数必须是字符串型,且格式必须为完整的”包.类名”,否则forName方法会抛出ClassNotFoundException异常.
 
这四种获取Class实例的方法是java反射技术经常用到的.
Class获得的实例到底是什么,我运用了第一种方法:             Class cls=str.getClass();并在控制台打印出cls的值,最后结果是:”java.lang.String”,对,没错,这就是Class的一个实例.试想一下,”Student”类是对所有学生的一个抽象和描述,这就类似于”Class”类是对所有java JDK 中提供的所有类的一个抽象描述;如果我要得到姓名为”张三”的学生,这时的这个名为”张三”的学生就是”Student”类的一个实例,因为”Student”类包括了学生”张三”;同样,因为”Class”类是对所有其它类的一个抽象和描述,也包括String类,所以String类就是”Class”类的一个实例.在程序中如果加上完整的包名就会如上述结果一样:java.lang.String.
当然最后需要说明的就是”Class”类的实例是通过反射技术得到的,而”Student”类的实例则与之不同.
在实际工作中,“Class”类还有很多方法需要用到,比如说获取类的构造方法,成员变量,方法等等.
这些都可以通过查阅JDK帮助文档来获取.
 
 
 
                                       未完.待续……
 
深入理解Java反射+动态代理,java开发面试笔试题 我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家。 扫描二维码加VX好友,拉你进【程序员面试学习交流群】免费领取。也欢迎各位一起在群里探讨技术。 答: 反射机制的定义: 是在运行状态中,对于任意的一个类,都能够知道这个类的所有属性和方法,对任意一个对象都能够通过反射机制调用一个类的任意方法,这种动态获取类信息及动态调用类对象方法的... 阅读详情

相关推荐

Unity游戏开发实战:如何用科大讯飞离线语音合成SDK实现NPC对话(附完整代码)

本文详细介绍了如何在Unity游戏开发中使用科大讯飞离线语音合成SDK实现NPC对话系统。通过完整的代码示例和优化技巧,开发者可以快速集成本地语音合成功能,提升游戏沉浸感,同时避免网络延迟问题。文章涵盖SDK集成、核心语音合成模块实现以及高级应用技巧,特别适合RPG游戏开发者参考。

weixin_29268385的博客 182

反射及代理

反射 一.反射概述 1.反射机制: 众所周知我们创建对象的过程是: 引入需要的“包类”名称 -->通过new实例化对象 -->获得对象 而反射的过程是: 通过对象 -->获得所在的类 -->通过所在类名-->可知在那个包下所构造的 ......

光看不点赞的博客 518

Delft3D从入门到实践:安装、编译与首次模拟指南

本文为Delft3D初学者提供了一份详尽的从零开始指南。内容涵盖软件获取、许可证申请、图形界面安装、核心计算内核的编译环境搭建与编译步骤,以及最终整合运行首个水动力模拟的全流程。重点解决了Windows系统下Delft3D安装与编译的常见问题,帮助用户快速上手这一开源水动力与泥沙输运模拟工具。

weixin_29303701的博客 542

九、代理与反射

ES6新增的代理与反射为开发者提供了拦截并向基本操作中嵌入额外行为的能力。在对目标对象的各种操作影响目标之前,可以在代理对象中对这些操作加以控制。 一、代理模式 代理是目标对象的抽象,即时目标对象的替身,有完全独立于目标对象,目标对象既可以直接被操作,又可以通过代理来操作 1.创建空代理 使用Proxy构造函数创建,第一个参数为目标对象,第二个参数为处理程序对象,缺少任何一个参数都会报TypeError Proxy.prototype为undefined;严格相等区分代理和目标 2.定义

coderxsj 913

PCAN-Explorer5使用教程

在PCAN中新建工程,导入DBC文件(右键apply),导入采集的数据选择对应的CAN通道点击红框中的标记可选择想要查看的信号在plot界面跳出属性,可调整信号显示的样式和最大最小值调出cursor,选择需要观测的变量,选中右键style——Period 可显示间隔时间增加cursor,可观测多个变量。

weixin_43997043的博客 6914

简易背单词系统C/C++

#include<stdio.h> #include<string.h> int F=20,N=100,k=0; int score[100]; int count=0; void hello(); void add(); void preview(); void mdelete(); void etc(); void cte(); void mscore(); void...

青木年华 9154

Java基础06-反射和代理

Java反射和代理

xiaohoulove_的博客 184

基于LendingClub数据的信贷分析和建模报告

一:课题分析 二:数据获取 三:数据探索 3.1主要特征含义理解 3.2特征分布 3.2.1目标特征分布 3.2.2分类变量的分布 3.2.3连续数值特征分布 3.2.4时序特征分布 3.2.5文字特征分布 3.2.6两两特征的协方差 四:数据预处理 4.1数据集划分 4.2特征缺失值识别与处理 4.2.1严重缺失值的处理 4.2.2缺失值填充 4.3同值性特...

棒子皮蹦蹦床 2万+

【Java】反射机制和代理机制

在 Java 动态代理机制中接口和Proxy类是核心Proxy,这个方法主要用来生成一个代理对象loader :类加载器,用于加载代理对象。interfaces : 被代理类实现的一些接口;h : 实现了接口的对象;要实现动态代理的话,还必须需要实现来自定义处理逻辑。当我们的动态代理对象调用一个方法时,这个方法的调用就会被转发到实现接口类的invoke方法来调用/*** 当你使用代理对象调用方法的时候实际会调用到这个方法要实现动态代理的话,还必须需要实现来自定义处理逻辑。

kazuhura的博客 1609

车载网络测试实操源码_使用CAPL解析VBF文件

VBF(Versatile Binary Format)文件是一种二进制文件格式,被沃尔沃、福特、马自达、吉利等汽车制造商广泛采用。这种格式无法使用我们常规的烧录器进行刷写,通常需要进行解析转化。如果各位需要自己编写软件或脚本来刷写VBF文件,或者需要对刷写功能进行测试时,那么本篇文章就会对你非常有用。今天我们就来讲一下如何使用CAPL脚本对VBF文件进行数据解析。VBF文件包含三部分:VBF版本段、文件头段、数据段。前面的版本段和文件头段是ASCII码,包含版本、地址、校验码等信息

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 2999

OData Request:Create Entity 在 ABAP OData Client Proxy 中的工程化实践

文章摘要 本文针对具备 SAP Gateway 与 ABAP 开发经验的读者,详细讲解如何通过 ABAP OData Client Proxy 实现 OData 服务的 Create 操作。首先对比了 OData V2 与 V4 的 Create 规范差异,强调键、集合 URL 和请求体的标准化要求。随后介绍了 ABAP Client Proxy 的编程模型,包括 Client Proxy、Entity List Resource 和 Create Request/Response 三个核心对象,并提供了完

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 247

Java反射和动态代理

Java反射和动态代理

游手好闲 2076

华为OD机试真题2025双机位B卷 Java&Go 实现【朋友圈个数】

给定一组朋友关系,统计一下该朋友关系网中的朋友圈个数。 朋友圈的定义:一个朋友圈至少由3个朋友组成,且要求同一个朋友圈中的任意两个人都具有直接的朋友关系。 输入描述 输入一个朋友关系列表,如 Fiends =A.B],[A.C],IB,DI,其中的每一个元素 Friendsi表示 Friends[i][0)和 Friends [i][1] 是朋友关系 先输入一个数字 N 代表关系的总数,后面每条关系一行,两个成员以逗号分隔

MISAYAONE的博客 520

深刻理解JDK动态代理的本质 1.反射 2.动态生成代码 3.重新编译生成class文件并加载运行

1)打断点,可以发现实际会生成新的对象去调用findLove。 把文件序列化到E盘 2)使用JAD把class文件反编译出来 // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) import com.gupaoedu.vip.pattern..

focus-unchanged-thing 594

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

探索Java类与接口关系的反射技巧

在Java编程中,理解一个类与其实现的接口之间的关系对于深入掌握面向对象的概念至关重要。反射机制提供了一种强大的方式来在运行时探索这些关系,使得我们能够动态地获取类的元数据信息。这种方法不仅可以帮助我们更好地理解Java的反射机制,还可以在实际编程中应用,比如在框架开发、动态代理等场景中查询类的信息,从而实现更加灵活的编程策略。最后,我们遍历这个数组,并打印每个接口的名称。为了展示这一过程,我们创建了一个简单的示例。类型的数组,数组中包含了该类实现的所有接口的。对象,这是反射中的基础。

liaozp88的博客 645

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

反射总结

1.什么时候加载类(类的加载时机)? 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 (1)创建类的实例 (2)访问类的静态变量,或者为静态变量赋值 (3)调用类的静态方法 (4)使用反射方式来强制创建某个类或接口对应的java.lang.Class对象 (5)初始化某个类的子类 ...

黑马程序员广州中心的专栏 90

js 深入理解代理和反射

代理和反射提供了拦截并向基本操作嵌入额外行为的能力。具体地说,可以给目标对象定义一个关联的代理对象,而这个代理对象可以作为抽象的目标对象来使用。在对目标对象的各种操作影响目标对象之前,可以在代理对象中对这些操作加以控制对刚刚接触这个主题的开发者而言,代理是一个比较模糊的概念,而且还夹杂着很多新术语。其实只要看几个例子,就很容易理解了。使用代理的主要目的是可以定义捕获器(trap)。捕获器就是在处理程序对象中定义的“基本操作的拦截器”。

weiweiliude2的专栏 1039

Java笔试面试-反射和动态代理

反射   反射机制是 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect)的能力。简单来说就是通过反射,可以在运行期间获取、检测和调用对象的属性和方法。 反射的使用场景 1.编程工具 IDEA 或 Eclipse 等,在写代码时会有代码(属性或方法名)提示,就是因为使用了反射; 2.很多知名的框架,为了让程序更优雅更简洁,也会使用到反射。 例如,Spring 可以通过配置...

HenryLei的博客 5万+

反射、代理简单理解

反射允许对成员变量,成员方法和构造方法的信息进行编程访问但是获取不是从类里面获取的,是从类的字节码(.class)文件中获取的,所以我们首先要学习如何获取类的class对象。在Java中,定义好了一个类Class,就是用来描述字节码文件的。

m0_58087746的博客 1025

搞懂Java代理和反射一篇就够了

搞懂Java代理和反射

我是老伯的博客 4293

十七:反射与动态代理

跳转到总目录 文章目录01、Java反射机制概述1.1、使用反射,实现同上的操作1.2、反射的强大:调用类的私有结构02、理解Class类并获取Class实例2.3、Class类的理解2.4、获取Class实例的4种方式2.5、Class实例对应的结构的说明03、类的加载与ClassLoader的理解3.6、了解:类的加载过程3.7、了解:什么时候会发生类初始化?3.8、ClassLoader的理解3.9、使用ClassLoader加载配置文件04、通过反射,创建运行时类的对象4.1、举例体会反射的动态性0

本人主攻Java,希望自己能成为出色的程序员。 2万+

彻底理解Java反射以及动态代理中对反射的应用

反射 (Reflection) 是 Java 的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。 简而言之,通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而 Java 反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象,即使...

Hopefully Sky的博客 5089

反射和动态代理的区别

好吧,我承认,这个博客的名称都是有点问题的。因为笔者这个时候也有点混沌,但是我坚信这个应该是在将要质变的时候才会有的状态。 步入正文:反射和动态代理的区别。 动态代理,代理,前面已经有一篇文章说了他们的用法,http://blog.youkuaiyun.com/wltsysterm/article/details/64437634。 我们也都知道,动态代理其实用到了反射。那么笔者还是想论述下初学者可能会

wltsysterm的博客 7680

深入理解 Java 反射和动态代理

???? 本文已归档到:「javacore」 ???? 本文中的示例代码已归档到:「javacore」 1. 简介 1.1. 什么是反射 反射(Reflection)是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性。 通过反射机制,可以在运行时访问 Java 对象的属性,方法,构造方法等。 1.2. 反射的应用场景 反射的主要应用场景...

静默虚空的专栏 971

反射和动态代理

Java基础中的反射和动态代理。学习这篇文章你能明白反射的原理和使用,以及动态代理的实现。文章浅显易懂,生动有趣

2301_77615930的博客 748
mygod_java
博客等级 码龄20年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值