Java反射、内省与Beanutils工具

别再乱改基础库了!手把手教你搞定uni-app小程序上传图片报错(chooseAndUploadFile权限篇) 本文详细解析了uni-app开发微信小程序时遇到的`chooseAndUploadFile`权限报错问题,并提供了四步解决方案。从隐私协议与API权限的关联入手,指导开发者正确配置后台声明、双重提交策略和版本管理,避免降级基础库等常见误区,确保小程序合规运行。 阅读详情
5.1 JavaBean

JavaBean是Java开发中的一个可以重复使用的的软件组件,本质就是一个Java类

一个标准的JavaBean组件需要遵循一定的编码规范

1.它必须有一个公共的、无参的公共构造方法,这个方法可以是编译器自动产生的默认构造方法

2.它提供公共的setter和getter方法让外部程序设置和获取JavaBean的属性

5.2反射

反射的根源的class类,如果想要完成反射操作,就必须认识class类

一般情况下,需要先有一个类的完整路径引入之后,才可以按照固定的格式产生实例化对象,但是,在Java中允许通过一个实例化对象,找到一个类的完整信息。这就是class类的功能

下面是class类的部分常用方法

方法声明

功能描述

static Class<?> forName(String className)

className为全限定类名(类的完整路径)

返回与带有字符串名的类或接口相关联的class对象

 

Constructor<?> [ ] getConstructors()

返回一个包含某些Constructor对象的数组,这个对象反映此Java对象所表示类的所有公共构造方法

 

Field[ ] getFields()

返回一个包含某些Field对象的数组,这些对象反映此class对象所表示的类或者接口的所有可访问公共字段包括继承的公共字段

 

Field[ ] getDeclaredField(String name)

返回一个包含某些field对象的数组,这些对象反映了此class对象所表示的类或接口所声名的所有字段(公共,保护,默认,私有),但是不包括继承字段

Method getMethod(String name,Class<?>..parameterType)

返回一个Method对象,反映此class对象所表示的类或者接口的指定公共成员方法

Class<?>[ ] getInterfaces

返回该类实现的接口的一个数组,确定此对象所表示的类或接口所实现的类

String getName()

以String的形式返还此class对象所表示的实体(类,接口,数组类,基本类型或void)名称

T newInstance()

创建此class对象所表示类的一个新实例

boolean isArray()

判定此class对象是否表示一个数组类

通过反射创建对象:

1.      通过无参构造方法创建对象

首先要保证被实例化的对象中一定要有无参构造方法;

接下来通过forName()方法获取class对象,再通过newInstance()方法创建对象

2.      通过有参构造方法创建对象

首先通过forName()方法获取class对象

通过class对象的getConstructors方法获取本类中全部的构造方法

向获取的构造方法中传递一个对象数组进去,包含构造方法所需的各个参数

通过Constructor类实例化对象

注意:Constructor类表示的是构造方法,该类有很多常用的方法

方法声明

功能描述

int getModifiers()

 获取构造方法的修饰符

String getName()

获得构造方法的名称

Class<?>[ ]getParameterTypes()

获取构造方法中参数的类型

T newInstance(Object..initargs)

向构造方法中传递参数,实例化对象

3.      通过反射访问对象的属性

通过反射访问对象的属性是通过Field类实现的,它提供的set()方法和ger()方法分别用于设置和读取属性,需要注意的是,如果,对象的某个属性为私有(private)的,则需要在修改或读取属性之前,通过serAccessible(boolean str)方法将属性设为外界可以访问的

4.      通过反射调用对象的方法

获得某个类的class对象之后,就可以用getMethod()方法或者getMetods()方法获取指定方法或者全部方法,

Method对象中有一个invoke()方法

public Object invoke(Object obj,Object..args)

参数obj是该方法最主要的参数(class类的实例化对象),它后面的参数args是一个相对于数组的可变参数,用来接收实参

5.3内省

Jdk中提供了一套API用来访问对象的某个属性的setter()和getter()方法,内省是Java语言对JavaBean类属性,事件和方法的一种标准处理方式

1.内省访问Javabean 有俩种方法

1.      通过java.beans包下的Introspector()类获得JavaBean对象的BeanInfo信息,再通过BeanInfo来获取属性的描述器(PropertyDescriptor),然后,通过这个属性描述器就可以获得某个属性的setter()方法和getter()方法

2.      直接通过java.beans包下的PropertyDescriptor()类来操作bean对象

JavaBean


通过方法一访问JavaBean的属性

 

2.修改JavaBean的属性


3.读取JavaBean的属性


5.4 BeanUtils工具

BeanUtils工具是apache提供的用于操作JavaBean的API

下载官网:https://commons.apache.org/proper/commons-beanutils/

注意:BeanUtils工具还需要一个logging包来配合使用

BeanUtils工具中最核心的类就是org.apache.commons.beanutils

方法声明

功能描述

static String getMappedProperty(Object bean,String name)

返回指定bean中指定索引属性的值,返回值为String类型

static String getMappedProperty(Object bean,String name,String key)

返回指定bean中指定索引属性的值,返回值为String类型

static String getProperty(Object bean,String name)

返回指定bean中指定属性的值,返回值类型为String类型

static void populate(Object bean,Map<

String,?extends Object> properties)

根据指定的名称/值对为相应的JavaBean属性值

static void setProperty(Object bean,String name,Object value)

设置指定bean中指定的属性值,传入的类型要求能转换成相应属性类型

例如


YOLOv11的QAT(训练感知量化)实战 本文总结了YOLO模型量化感知训练(QAT)的实践要点:QAT通过模拟量化噪声训练模型,比训练后量化(PTQ)更适合密集预测任务。关键实现包括:1)配置对称/非对称量化器;2)排除检测头量化;3)调整学习率策略并添加量化正则;4)选择困难样本校准;5)转换前稳定BN统计量。调试时需检查量化范围、数值分布和逐层突变,并注意SPP等敏感层。建议小模型使用QAT,大模型可能适得其反,且TensorRT的FP16模式可能优于INT8-QAT。量化应以功能正确为前提,避免过度优化。 阅读详情

相关推荐

【LLM】ms-Swift框架下SFT与GRPO协同优化的高效训练策略

本文深入探讨了ms-Swift框架下监督微调(SFT)与群组相对策略优化(GRPO)的协同训练策略,提升大型语言模型(LLM)的性能与效率。通过创新的架构设计和两阶段训练流程,结合GRPO的群组奖励估计与动态基线调整技术,显著优化了数学推理等任务的准确率。文章还分享了计算资源高效利用和参数调优的实战经验,为LLM训练提供了实用指导。

green的博客 994

Java的反射(Reflection)、内省(Retrospector)和beanUtils工具

反射(Reflection):加载类,并解剖出类的各个组成部分(反射就是解剖的意思) 加载类,获得类的字节码(三种方式): Class clazz1 = Class.forName("cn.xxx.bean.Person");Class clazz2 = new Person().getClass();Class clazz3 = Person().class;

Clement-Xu的专栏 4285

逆向工程实战:解密AppleAccount的X-MMe-Nas-Qualify签名生成机制

本文通过逆向工程实战,详细解析了AppleAccount服务中X-MMe-Nas-Qualify签名的生成机制。作者利用Frida进行动态追踪定位签名源头,结合IDA Pro进行静态分析,并借助LLDB动态调试还原核心算法。文章最终分享了如何独立于苹果官方库,通过Python代码复现签名算法,为自动化测试和深度交互苹果服务的开发者提供了关键技术路径。

weixin_29323049的博客 707

Java beanutils对比,Java学习笔记之<反射、内省、BeanUtils包操作JavaBean的对比>

public class Demo {public static void main(String[] args) throws Exception {//获取Class对象Class> c = Class.forName("com.qq.java.javabean.Student");//获取Constructor对象Constructor> constructor = c.getC...

weixin_33093323的博客 175

FPGA编译加速实战:6大可落地的Vivado优化策略

FPGA编译本质上是NP-hard约束满足问题求解,而非传统软件编译;Vivado作为时序驱动的硬件实现工具链,其耗时瓶颈集中在Implementation阶段的布局布线(PnR)与逻辑优化。理解这一原理,才能跳出‘加线程’‘升版本’等表面优化,转向精准时序约束、增量编译、物理锚点控制、IP配置精简等工程级干预。这些技术手段直接作用于Vivado的Tcl执行流与底层求解空间,显著压缩搜索范围、减少无效迭代——尤其适用于Zynq/UltraScale等中大型项目(LUT > 80K、多时钟域、DDR/PCIe

weixin_34226182的博客 413

ARS408毫米波雷达数据解析避坑指南:从硬件连接到Python处理

本文提供了ARS408毫米波雷达从硬件连接到Python数据处理的完整实战指南。针对串口通信不稳定、数据解析错误等常见问题,详细解析了硬件连接方案选择、串口数据高效读取策略、二进制协议解析的位操作技巧,并给出了坐标转换、目标跟踪及实时可视化的代码实现,帮助开发者快速搭建稳定的雷达数据处理流水线。

weixin_29091105的博客 149

java beanutils.setproperty,java – 替代BeanUtils.getProperty()

BeanUtils非常强大,因为它支持嵌套属性. E.G“bean.prop1.prop2”,将Maps作为bean和DynaBeans处理.例如:HashMap hashMap = new HashMap();JTextArea value = new JTextArea();value.setText("jArea text");hashMap.put("jarea", value);Stri...

weixin_39717029的博客 649

使用CLion在Window端进行linux开发

        以往不管是开发x86端linux程序还是arm端linux程序,都是使用Source Insight作为源码编辑工具的,如下图      去年底,发现CLion的2018.3更新版本,可以支持remote host开发了,大爱!     我是基于以下几点原因,将开发工具换成CLion 1. 语法高亮较明显、跳转、重构方便(我很看重这个); 2. 可以使用图形界面进行调...

alist的笔记专栏 1万+

spring的beanutils工具类_基于spring-beans实现工具类BeanUtils基于Class实例化注入对象及查找方法、复制属性等操作...

一、前言基于spring-beans(4.1.4)的工具类org.springframework.beans.BeanUtils对注入spring对象按照Class实例化instantiateClass、class对象方法名称methodName查找findMethod、属性查找对于class类信息findPropertyType、对象属性复制copyProperties等常用操作,具体如下源码所...

weixin_34805308的博客 676

如何使用Python爬取并保存网页上的所有附件

爬虫(Crawler)是一种自动化程序,它通过模拟人工访问网页并下载网页上的数据或文件,常用于数据采集和分析。爬虫通常以“爬取”的形式自动浏览和提取网页中的各种信息。本文详细介绍了如何使用Python爬取并保存网页中的附件文件,涵盖了网页解析、文件下载、多线程与异步优化等内容。希望通过本文的讲解,能够帮助你理解并掌握附件爬取的技巧。在实际应用中,爬虫开发不仅需要解决技术问题,还要遵守网络道德和法律法规,避免不当使用爬虫造成负面影响。

2201_76125261的博客 967

项目模块提取生成jar包上传到nexus供其他项目使用

项目场景: 微服务项目当中的某一个模块其他项目进行复用,资源管理搭建的有私服 nexus。 问题描述: 如果把功能用到其他项目,代码重复量太大,不想些重复的代码。 原因分析: 如果把这个模块单独提取出来进行复用,至于操作数据库的功能,使用远程调用进行数据库操作,这样就能解决相同模块重复编写的工作。量。 解决方案: 首先对模块代码进行封装提取,把一些用到的参数提取出来,以传参的形式来对参数进行传递。这个需要根据具体的情况进行代码提取,提取之后把这个模块的代码进行打包,打包可以借助开发工具进行打包(记得使用 d

lierjun 的专栏 451

java反射性能测试分析

java反射性能测试分析    java有别于其他编程语言而让我着迷的特性有很多,其中最喜欢的是接口设计,他让我们设计的东西具有美感。同样反射也是我比较喜欢的一个特性,他让程序自动运行,动态加载成为了可能,同时也是现在很多流行框架所必不可少的特性,struts,hibernate等都是,spring本身就是基于反射的就更不用说了。细细想来,似乎很少有不涉及到

xu_zh_h的专栏 744

BiSeNet:面向实时语义分割的双边网络

BiSeNet 系列重新定义了实时语义分割的范式“不要在速度和精度之间妥协——用架构创新,两者兼得。V1:提出双边解耦思想,启发后续大量工作;V2:通过极致轻量化,证明小模型也能高精度;V3(工业版):推动端侧 AI 落地,成为行业标准之一。如今,BiSeNet 已成为嵌入式视觉系统的默认选择,其设计理念(解耦、轻量、融合)被广泛应用于目标检测、姿态估计等领域。

浩瀚之水的专栏 268

Apache Commons BeanUtils:简化Java反射和内省的强大工具

Apache Commons BeanUtils:简化Java反射和内省的强大工具 项目地址:https://gitcode.com/gh_mirrors/co/commons-beanutils 项目介绍 Apache Commons BeanUtils 是一个由 Apache 软件基金会维护的开源项目,旨在为 Java 开发者提供一个简单但灵活的反射和内省工具包。通过 BeanUtils,开发...

gitblog_00398的博客 753

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java的反射,内省,beanUtils工具

反射(Reflection):加载类,并解剖出类的各个组成部分(反射就是解剖的意思) 加载类,获得类的字节码(三种方式): Class clazz1 = Class.forName("cn.xxx.bean.Person");Class clazz2 = new Person().getClass();Class clazz3 = Person().class;

Veyron_wu 518

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java反射--PropertyDescriptor类:(属性描述器)、Introspector类

JAVA中反射机制(JavaBean的内省与BeanUtils库) 内省(Introspector) 是Java 语言对JavaBean类属性、事件的一种缺省处理方法。   JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为“值对象”(Value Ob...

weixin_42069143的博客 3万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

内省java_Java内省详解

内省和反射有什么区别:反射式在运行状态把Java类中的各种成分映射成相应的Java类,可以动态的获取所有的属性以及动态调用任意一个方法,强调的是运行状态。内省机制是通过反射来实现的,BeanInfo用来暴露一个bean的属性、方法和事件,以后我们就可以操纵该JavaBean的属性。1.通过PropertyDescriptor修改属性方式1 public classBeanInfoUtil {2 ...

weixin_39569051的博客 173

普通的使用java反射内省以及使用BeanUtils工具包对javaBean进行操作

/** * 使用beanUtils工具包  需要导入第三方jar * commons-beanutils-1.8.3.jar * commons-logging-1.1.1.jar */ package com.sg.reflex.test; import java.beans.BeanInfo; import java.beans.IntrospectionException; ...

sungang1120的专栏 177

Java的内省技术

什么是内省 在计算机科学中,内省是指计算机程序在运行时(Run time)检查对象(Object)类型的一种能力,通常也可以称作运行时类型检查。 不应该将内省和反射混淆。相对于内省,反射更进一步,是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。 内省和反射的区别 反射是在运行状态把Java类中的各种成分映射成相应的Java类,可以动态的获取所有的属性以及动...

不思量 7134

java基础加强(反射、内省、BeanUtils工具类、类加载器、动态代理)

------- android培训、java培训、期待与您交流! ---------- 反射:就是把java类中的各种成分映射成相应的java类。 1.获取类的字节码:     String str = "abc";     Class cls1 = str.getClass();     Class cls2 = String.class;     Class cls

chq497130800的专栏 648

java 内省技术

什么是内省 在计算机科学中,内省是指计算机程序在运行时(Run time)检查对象(Object)类型的一种能力,通常也可以称作运行时类型检查。 不应该将内省和反射混淆。相对于内省,反射更进一步,是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。 内省和反射的区别 反射是在运行状态把Java类中的各种成分映射成相应的Java类,可以动态的获取所有的属性以及动态调用任意一个方法,强调的是运行状态。 . 内省(IntroSpector)是Java 语言针对 Bean 类

technologyleader的专栏 332

Java反射:内省,BeanUtils

内省 开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性。 JavaBean 所有属性为private。 这个类必须有一个公共的缺省构造函数。即是提供无参数的构造器。 这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。 这个类应是可序列化的。实现se...

离开屏幕的光,哪盏灯照亮你的孤独? 343

java内省技术,Java的内省技术

以前知道Java中的反射, 也学习过一些和反射相关的内容. 今天看到了一个叫内省(IntroSpector)的技术, 所以就总结一下本文内容包括:什么是内省(IntroSpector)内省的作用内省和反射的区别如何使用内省内省的例子beanutils工具包使用如果觉得文章写的不错, 可以关注微信公众号: Coder张小凯内容和博客同步更新~Java的内省技术什么是内省内省: 计算机程序在运行时(R...

weixin_42309785的博客 423

java内省_java内省机制

一、内省是什么、实现方式:内省(Introspector)是Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新的值。通过getName/setName来访问name属性,这就是默认的规则。Java中提供了一套API用来访问某个属性的getter/setter方法,通过这些API可以使你不需要了解这个规则,...

weixin_42611177的博客 408

Java内省详解

内省的解释内省在wiki上的解释: 在计算机科学中,内省是指计算机程序在运行时(Run time)检查对象(Object)类型的一种能力,通常也可以称作运行时类型检查。

zhengxinzhi's blog 9983

java 内省机制_Java反射及 IoC原理、内省机制

JAVA反射及IoC原理、JAVA内省1. 反射反射是框架设计的灵魂,使用前提:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码文件)。1.1 反射概述主要指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。Java反射机制:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对...

weixin_30844577的博客 373
上一篇: 请求转发与请求重定向
下一篇: EL表达式
香草味小布丁
博客等级 码龄10年 461粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值