郑州中原区建设局网站柳江企业网站开发公司

news/2025/9/28 7:10:04/文章来源:
郑州中原区建设局网站,柳江企业网站开发公司,实用的wordpress插件,快餐网站模板前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、内省是什么、实现方式#xff1a; 内省#xff08;Introspector#xff09;是Java语言对Bean类属性、事件的一种缺省处理方法。…  前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到教程。 一、内省是什么、实现方式 内省Introspector是Java语言对Bean类属性、事件的一种缺省处理方法。 例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新的值。 通过getName/setName来访问name属性这就是默认的规则。 Java中提供了一套API用来访问某个属性的getter/setter方法通过这些API可以使你不需要了解这个规则 这些API存放于包java.beans中。Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新的值。通过getName/setName来访问name属性这就是默认的规则。Java中提供了一套API用来访问某个属性的getter/setter方法通过这些API可以使你不需要了解这个规则但你最好还是要搞清楚这些API存放于包java.beans中。一般的做法是通过类Introspector来获取某个对象的BeanInfo信息 然后通过BeanInfo来获取属性的描述器PropertyDescriptor 通过这个属性描述器就可以获取某个属性对应的getter/setter方法 然后我们就可以通过反射机制来调用这些方法。一般的做法是通过类Introspector来获取某个对象的BeanInfo信息然后通过BeanInfo来获取属性的描述器PropertyDescriptor通过这个属性描述器就可以获取某个属性对应的getter/setter方法然后我们就可以通过反射机制来调用这些方法。内省的解释 内省在wiki上的解释 在计算机科学中内省是指计算机程序在运行时Run time检查对象Object类型的一种能力通常也可以称作运行时类型检查。  不应该将内省和反射混淆。相对于内省反射更进一步是指计算机程序在运行时Run time可以访问、检测和修改它本身状态或行为的一种能力。 二、内省和反射区别区别 反射式在运行状态把Java类中的各种成分映射成相应的Java类可以动态的获取所有的属性以及动态调用任意一个方法强调的是运行状态。  内省机制是通过反射来实现的BeanInfo用来暴露一个bean的属性、方法和事件以后我们就可以操纵该JavaBean的属性 在Java内省中用到的基本上就是上述几个类。  通过BeanInfo这个类就可以获取到类中的方法和属性具体的可以参考JDK文档 Web 开发框架 Struts 中的 FormBean 就是通过内省机制来将表单中的数据映射到类的属性上 因此要求 FormBean 的每个属性要有 getter/setter 方法。 但也并不总是这样什么意思呢就是说对一个 Bean 类来讲 我可以没有属性但是只要有 getter/setter 方法中的其中一个 那么 Java 的内省机制就会认为存在一个属性比如类中有方法 setMobile 那么就认为存在一个 mobile 的属性。 将 Java 的反射以及内省应用到程序设计中去可以大大的提供程序的智能化和可扩展性。 有很多项目都是采取这两种技术来实现其核心功能例如我们前面提到的 Struts 还有用于处理 XML 文件的 Digester 项目其实应该说几乎所有的项目都或多或少的采用这两种技术。 在实际应用过程中二者要相互结合方能发挥真正的智能化以及高度可扩展性。 三、内省代码演示 1).内省(Introspector)是Java 语言对Bean类属性、事件的一种缺省处理方法。例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。通过 getName/setName 来访问 name 属性这就是默认的规则。     Java 中提供了一套 API 用来访问某个属性的 getter/setter 方法通过这些 API 可以使你不需要了解这个规则但你最好还是要搞清楚这些 API 存放于包 java.beans 中。 2).直接通过属性的描述器java.beans.PropertyDescriptor类来访问属性的getter/setter 方法; 相关代码 public class Point {     private Integer x;     private Integer y;     public Point(Integer x, Integer y) {     super();     this.x  x;     this.y  y;     }     public Integer getX() {     return x;     }        public void setX(Integer x) {     this.x  x;     }     public Integer getY() {     return y;     }      public void setY(Integer y) {     this.y  y;     }     }     import java.beans.PropertyDescriptor;     import java.lang.reflect.Method;     public class Reflect {     public static void main(String[] args) throws Exception {     Point point  new Point(2, 5);     String proName  x;     getProperty(point, proName);     setProperty(point, proName);     }     private static void setProperty(Point point, String proName) throws Exception {     PropertyDescriptor proDescriptor  new PropertyDescriptor(proName, Point.class);     Method methodSetX  proDescriptor.getWriteMethod();     methodSetX.invoke(point, 8);     System.out.println(point.getX());// 8     }     private static void getProperty(Point point, String proName) throws Exception {     PropertyDescriptor proDescriptor  new PropertyDescriptor(proName, Point.class);     Method methodGetX  proDescriptor.getReadMethod();     Object objx  methodGetX.invoke(point);     System.out.println(objx);// 2     }     }       3).通过类 Introspector 来获取某个对象的 BeanInfo 信息然后通过 BeanInfo 来获取属性的描述器 PropertyDescriptor 通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法然后我们就可以通过反射机制来调用这些方法。 相关代码 把2中的getProperty()修改成如下形式 private static void getProperty(Point point, String proName) throws Exception {     BeanInfo beanInfo  Introspector.getBeanInfo(point.getClass());     PropertyDescriptor[] proDescriptors  beanInfo.getPropertyDescriptors();     for(PropertyDescriptor prop: proDescriptors){     if(prop.getName().equals(proName)){     Method methodGetx  prop.getReadMethod();     System.out.println(methodGetx.invoke(point));//8     break;     }     }     }    4).我们又通常把javabean的实例对象称之为值对象 Value Object,因为这些bean中通常只有一些信息字段和存储方法没有功能性方法。一个JavaBean类可以不当JavaBean用而当成普通类 用。JavaBean实际就是一种规范当一个类满足这个规范这个类就能被其它特定的类调用。一个类被当作javaBean使用时JavaBean的 属性是根据方法名推断出来的它根本看不到java类内部的成员变量(javabean的成员变量通常都是私有private的)。 5).除了反射用到的类需要引入外内省需要引入的类如下所示它们都属于java.beans包中的类自己写程序的时候也不能忘了引入相应的包或者类。 import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; 6).下面讲解一些开源的工具类Beanutils,需要额外下载的commons-beanutils.jar要使用它还必须导入commons-logging.jar包不然会出异常 相关代码一 public static void main(String[] args) throws Exception {     Point point  new Point(2, 5);     String proName  x;     BeanUtils.setProperty(point, proName, 8);     System.out.println(point.getX());// 8     System.out.println(BeanUtils.getProperty(point, proName));// 8     System.out.println(BeanUtils.getProperty(point, proName).getClass().getName());// java.lang.String     BeanUtils.setProperty(point, proName, 8);     System.out.println(BeanUtils.getProperty(point, proName).getClass().getName());// java.lang.String     }     //我们看到虽然属性x的类型是Integer但是我们设置的时候无论是Integer还是StringBeanUtils的内部都是当成String来处理的。   相关代码二 BeanUtils支持javabean属性的级联操作 public static void main(String[] args) throws Exception {     Point point  new Point(2, 5);//在point中加一个属性 private Date birth  new Date();并产生setter/getter方法     String proName  birth;     Date date new Date();     date.setTime(10000);     BeanUtils.setProperty(point, proName, date);     System.out.println(BeanUtils.getProperty(point, proName));     BeanUtils.setProperty(point, birth.time, 10000);     System.out.println(BeanUtils.getProperty(point, birth.time));//10000      }      //之所以可以 BeanUtils.setProperty(point, birth.time, 10000);这样写那是因为Date类中有getTime()和setTime()方法即Date类中相当于有time这个属性。    相关代码三 BeanUtils和PropertyUtils对比 public static void main(String[] args) throws Exception {     Point point  new Point(2, 5);     String proName  x;     BeanUtils.setProperty(point, proName, 8);     System.out.println(BeanUtils.getProperty(point, proName));//8     System.out.println(BeanUtils.getProperty(point, proName).getClass().getName());//java.lang.String     // PropertyUtils.setProperty(point, proName, 8);//exception:argument type mismatch     PropertyUtils.setProperty(point, proName, 8);     System.out.println(PropertyUtils.getProperty(point, proName));//8     System.out.println(PropertyUtils.getProperty(point, proName).getClass().getName());//java.lang.Integer      }      //BeanUtils它以字符串的形式对javabean进行转换而PropertyUtils是以原本的类型对javabean进行操作。如果类型不对就会有argument type mismatch异常。   6).理解了相应的原理那些现成的工具用起来就会更舒服如Beanutils与 PropertyUtils工具。这两个工具设置属性的时候一个主要区别是PropertyUtils.getPropety方法获得的属性值的类型为该 属性本来的类型而BeanUtils.getProperty则是将该属性的值转换成字符串后才返回

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亿诚建设项目管理有限公司网站四字母net做网站怎么样

数据架构的重要构件之一是数据模型,当然从数据架构的视角来说的数据模型是指企业级数据模型。本篇文章更多是讨论如何设计和管理数据模型,此处的数据模型是泛指在组织中通过数据建模的过程,来发现、分析和确定数据需求范围,并用于…

五屏网站建设代理商珠海网站建设电话

文章目录 电压源与电流源简介1.电压源的本质2.电流源的本质3.Q&A 推荐学习 电压源与电流源简介 1.电压源的本质 无论带什么样的负载,输出电压保持不变的电路才是电压源。 一个电路想要输出电压不变,那它必须有强有力的输出电流能力,而不…

grammar(?

随机重排函数,shuffle(begin(),end(),rnd / rand()); (mt19937 rnd(time(0))😉 scanf读入printf输出 long double 需要用 %Lf

外贸电子网站建设南京seo关键词优化服务

一、堆树的定义 堆树的定义如下: (1)堆树是一颗完全二叉树; (2)堆树中某个节点的值总是不大于或不小于其孩子节点的值; (3)堆树中每个节点的子树都是堆树。 当父节点的键…

免费招聘网站平台有哪些wordpress右侧空白

第二周作业:本周作业内容:1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。touch,rm,mv,cp,file,ls,chmod,chown,ln,rename,touch 修改文件atime,如果文件不存在,那么创建该文件。rm&#xff1…

网站 外包 版权网站域名价值查询

大模型日报 2024-05-05 大模型新闻: Techs new arms race: The billion-dollar battle to build AI - 小型专业化模型可以为各种细分应用提供关键的、高效的能力,这是AI行业必须要支持的。来源:VentureBeatGenerative AI on Agenda for Next CIECA Webin…

什么网站做的比较好国家企业信息年度申报系统

内置函数 all()1、描述:all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 True,否则返回 False。元素除了是 0、空、None、False外都算 True。等价于函数:def all(iterable):for element in iterable:if not element:retur…

读人形机器人25伦理问题

读人形机器人25伦理问题1. 数据安全与隐私保护 1.1. 机器人融入日常生活引发了诸多伦理问题,社会必须予以关注 1.2. 在机器人日益融入家庭和工作场所的时代,保护个人信息至关重要 1.3. 数据安全和隐私是人机交互中至…

使用场景规则匹配模式代替复杂的if else条件判断

缘起 在业务处理程序中, 经常需要按照不同的场景有不同的处理方式, 在代码库中也充斥着大量的复杂的 if/else 语句, 这类代码可维护性非常差, 底层原因有:每个场景缺少定义, 将场景识别和场景的应对代码耦合在一…

9.28作业

结果: false false true SMALL MEDIUM 原因:枚举是特殊的类,他的每一个枚举值都是类的实例,LARGE两者指向不同内存地址,因此结果为 false 。isPrimitive() 用于判断是否为原始类型,因此结果为 false 。 结论:…

网站举报能不能查到举报人网站建设合同 模板

环境:win7python2.7 一直想学习多进程或多线程,但之前只是单纯看一点基础知识还有简单的介绍,无法理解怎么去应用,直到前段时间看了github的一个爬虫项目涉及到多进程,多线程相关内容,一边看一边百度相关知识点,现在把一些相关知识点和一些应用写下来做个记录. 首先说下什么是进…

广东网站建设英铭科技开一个小程序要多少钱

1.使用YUM查找软件包 $ yum search python 2.列出所有可安装的软件包 $ yum list | grep python 3.列出所有可更新的软件包 $ yum list updates 4.列出所有已安装的软件包 $ yum list installed | grep python

哪个网站可以搭建网页网站建设合同 技术合同

城市的街道因为汽车数量的增长越来越繁忙,对于驾车一族而言,在热门区域寻找停车场更是无比头痛的事情。然而与此同时,其实也许很多办公楼、住宅楼、酒店和公共车库中仍有许多付费停车的资源未被充分利用。 ParkBee就是这样一家为城市提供智能…

上海校园兼职网站建设微信插件 wordpress

数字人是指通过人工智能和虚拟形象技术创造的虚拟个体,具备自己的外貌、声音和行为。数字人的出现引起了广泛关注和热议,成为当今社会热门话题。本文将解析数字人的概念和特点,并探讨数字人之所以如此火爆的原因。 一、什么是数字人&#xf…

链接网站某一页面如何做自己怎么做网站推广

VS2022今天Visual Studio 2022 终于发布了,你只需要按下⾯地址就可以快速安装你所需要的Visual Studio 2022版本,包括了企业版本,专业版本,以及社区版本。请输入以下⽹址安装最新的Visual Studio 2022 https://aka.ms/InstallVS或…

2025.9.28+7[未完]

2025.9.28 Week 笔记2025.9.28

网站备案ip更换企业网站ui设计

1. 卷积神经网络结构:分为输入层,卷积层,池化层,全连接层; (1)首先进入输入层,对数据数据进行处理,将输入数据向量化处理,最终形成输入矩阵。 (…

建设网站一定要电脑吗网站建设背景介绍

ORI-S3R500 -多路PCIe3.0的单CPU通用工作站 (研华工业计算机IPC-610,IPC940 升级款) 一、机箱功能和技术指标: 系统 系统型号 ORI-SR500 主板支持 EEB(12*13)/CEB(12*10.5)/ATX(12*9.6)/Mi cro ATX 前置硬盘 最大支持2个3.5寸1个2.5寸SATA …

网站建设的发展趋势网站网站代理怎么做的

远程控制网关在工厂自动化领域中起到了至关重要的作用,特别是在工厂PLC数据通讯方面。它充当着数据传输的桥梁,连接了工厂中的各类设备和系统,实现了远程监控和控制的功能。本文将详细介绍远程控制网关在工厂PLC数据通讯中的应用。 远程控制网…

做家常菜的网站哪个好广东新闻联播今天

博主是将大图切分成小图时遇到 问题一、linux编译后,找不到ffmpeg中的一个文件 产生原因,各种包集成,然后安装以后乱七八糟,甚至官方的教程也不规范导致没有添加路径到系统文件导致系统执行的时候找不到 1.下载 博主进行的离线…