随笔分类 -  Java动手做一做之反射编程学习

摘要:使用代理可以在程序运行时创建一个实现指定接口的新类(代理类)。 通常只有在编译时无法确定需要使用哪个接口时才需要使用代理,这对于应用程序员很少见。 但是对于系统程序员而言,代理可以为工具类提供更加灵活的特性。 下面我们学习一个简单的销售场景来理解动态代理的精髓。 1.房屋销售应用程序设计 首先我们定 阅读全文
posted @ 2022-07-04 21:14 文牧之 阅读(11) 评论(0) 推荐(0) 编辑
摘要:通过前面的学习,我们知道了反射其实是面向类编程的。 下面我们综合所学的知识,来编写一个使用与所有对象的toString方法。 下面学习两种意义上的toString: 1)将这个类公共信息打印出来 /** * 只输出类的公共信息 * @param object 对象 * @return 该对象的类对象 阅读全文
posted @ 2021-11-28 16:24 文牧之 阅读(17) 评论(0) 推荐(0) 编辑
摘要:利用反射,我们无需再编写复杂的数组操作方法来进行数组的扩容,反射为我们提供了更为简便,效率更高的方式进行数组扩容。 1.关键方法 //这个方法用来判断一个class是否是数组类型的 calzz.isArray() //这个方法用来获得数组存储的元素类型 Class<?> componentType 阅读全文
posted @ 2021-11-28 15:51 文牧之 阅读(15) 评论(0) 推荐(0) 编辑
摘要:在Java中,我们通常时使用构造方法来进行对象的创建的,而构造方法可以分为有参数和无参数两种。 如果类中没有定义构造方法,那么默认会自动添加一个构造方法。 下面我们学习如何使用Class获得类的构造器对象Constructor,并使用构造器对象创建对象 关键方法: //此方法用于获得指定类型入参的构 阅读全文
posted @ 2021-11-28 15:48 文牧之 阅读(13) 评论(0) 推荐(0) 编辑
摘要:根据上一节类比,我们很容易知道,如果想要用反射操作某个对象的方法,那么Method对象是必不可少的。 首先我们要获得Class对象的Method对象,然后调用: //此方法用与获得Class的指定名称和参数类型的方法对象 getDeclaredMethod(String name, Class<?> 阅读全文
posted @ 2021-11-26 20:36 文牧之 阅读(11) 评论(0) 推荐(0) 编辑
摘要:通常为了保证面向对象的封装特性,我们一般将Bean中的字段设置成私有的,然后提供对应的get和set方法对字段进行控制。 下面学习如何利用反射来对对象的私有字段进行控制,达到运行时修改类的私有字段的目的。 1.关键方法 如果我们想对一个Class类型的对象的字段进行处理,我们必须获得这个类型的Fie 阅读全文
posted @ 2021-11-25 21:52 文牧之 阅读(3) 评论(0) 推荐(0) 编辑
摘要:下面学习如何获得一个类的内部类的信息 关键方法 getDeclaredClasses();此方法用于获得一个类的内部类的Class数组 实例: import java.lang.reflect.Modifier; import java.lang.reflect.Type; public class 阅读全文
posted @ 2021-11-25 21:51 文牧之 阅读(12) 评论(0) 推荐(0) 编辑
摘要:下面我们学习如何实现按继承层次对类进行排序 Java提供了instanceof运算符来比较两个类(或接口)之间是否存在继承关系。但是如果对多个类按照继承关系进行排序,使用这个运算符是非常麻烦的。 但是利用反射,这个功能就显得比较简单了 关键方法: // 这个方法判断当前Class对象所表示的类与给定 阅读全文
posted @ 2021-11-24 21:17 文牧之 阅读(10) 评论(0) 推荐(0) 编辑
摘要:一个类的成员包括: 变量构造器方法 在反射中,变量用Field对象表示,构造器用Constructor对象表示,方法则用Method表示。 Class中相关方法: getConstructors();返回该类型的Class的所有构造器方法对象 getDeclaredFields();返回该类型Cla 阅读全文
posted @ 2021-11-23 21:44 文牧之 阅读(9) 评论(0) 推荐(0) 编辑
摘要:1.什么是类的声明信息 通常类的声明可以包括如下信息: 类的修饰符类的标准名称类的泛型参数类的继承类以及实现的接口类的注解信息 下面将学习如何获得这些信息: 我们将用到Class类中的下面关键方法 forName(String className) //根据给定的名称获取Class对象 getAnn 阅读全文
posted @ 2021-11-23 21:30 文牧之 阅读(9) 评论(0) 推荐(0) 编辑
摘要:基于第一个实验,当我们获得一个类型的Class对象的时候,首先我们需要学习获取该类型的名称, 在Class类中有两个重要的方法: getName();它用于获取类的全称(包路径+类名) getSimpleName(); 它仅用于获取类名 public static void main(String[ 阅读全文
posted @ 2021-11-22 21:55 文牧之 阅读(10) 评论(0) 推荐(0) 编辑
摘要:Java的数据类型可以分为两类:引用类型和原始类型 对于每种类型的对象,Java虚拟机会去实例化一个不可变的Java.lang.Class对象 这个Class对象提供了在程序运行时检查对象属性的方法,这些属性包括一个类的成员和类型信息。 可以说Class对象是反射编程的基础,入口,没有这个对象,反射 阅读全文
posted @ 2021-11-22 21:53 文牧之 阅读(24) 评论(0) 推荐(0) 编辑

more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示