java的内省和反射

Java基础:反射与内省 反射和内省是Java语言中强大的特性,它们允许程序在运行时动态地获取和操作类的信息、创建对象,并访问和调用类的属性和方法。然而,由于反射和内省涉及到运行时的操作,因此在使用时需要注意性能和安全性,并且尽量避免过度使用,以保证代码的可读性和性能。通过反射,我们可以在运行时动态地获取类的信息、创建对象,并访问和调用类的属性和方法。反射是Java语言中一种强大的机制,它允许程序在运行时动态地获取类的信息,并且可以通过获取的信息来操作类的属性和方法。反射可以让我们在运行时动态地访问和调用类的属性和方法。 阅读详情
      反射就是把java类中的各种成分映射成为相应的java类。

      例如:一个java类用一个Class类的对象来表示,一个类中的组成部分:成员变量、方法、构造函数、包等等信息,也用一个个java类来表示,获得其中的变量,方法,构造函数,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,它们是Field、Method、Constructor、Package等等

String name="com.test.Person";
Class c=Class.forName(name);
//或者Class c=obj.getClass;
Method m[]=c.getDeclaredMethods();
      反射技术实际已经能够完全满足我们对javabean的各种操作了,但是为了方便jdk还是为我们提供了一套操纵javabean的api,称之为内省操作(Introspector)

      内省是 Java 语言对 Bean 类属性、事件的一种缺省处理方法。例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。通过 getName/setName 来访问 name 属性,这就是默认的规则。 Java 中提供了一套 API 用来访问某个属性的 getter/setter 方法,通过这些 API 可以使你不需要了解这个规则(但你最好还是要搞清楚),这些 API 存放于包 java.beans 中。
      一般的做法是通过类 Introspector 来获取某个对象的 BeanInfo 信息,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),通过这个属性描述器就可以获取某个属性对应的getter/setter 方法,然后我们就可以通过反射机制来调用这些方法。
      下面示范两种内省操作,首先给一个javabean

    public class UserBean {
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
    }
      第一种方法较为繁琐,但通常在批量操作javabean时很管用

        import java.beans.BeanInfo;
	import java.beans.IntrospectionException;
	import java.beans.Introspector;
	import java.beans.PropertyDescriptor;
	import java.lang.reflect.InvocationTargetException;
	import java.lang.reflect.Method;

	public class UserBeanHandlerOne {

		public static void main(String args[]) {
			UserBean user = new UserBean();
			try {
				handleBean(user);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		private static void handleBean(UserBean user)
				throws IntrospectionException, IllegalArgumentException,
				IllegalAccessException, InvocationTargetException {
			BeanInfo bi = Introspector.getBeanInfo(user.getClass());
			PropertyDescriptor[] pd = bi.getPropertyDescriptors();
			for (PropertyDescriptor p : pd) {
				String attrName=p.getName();
				if(attrName.equals("name")||attrName.equals("age")){
					Method writeMethod=p.getWriteMethod();//得到set方法
					Class clazz[]=writeMethod.getParameterTypes();
					if(clazz[0]==int.class)
					      writeMethod.invoke(user, 20);
					else
					      writeMethod.invoke(user, "peter");//执行set方法
					Method readMethod = p.getReadMethod();//获取get方法
					Object obj = readMethod.invoke(user);//执行get方法
					System.out.println(obj);
				}
			}
		}
	}	
      第二种方法是对于某个特定的属性

        import java.beans.IntrospectionException;
	import java.beans.PropertyDescriptor;
	import java.lang.reflect.InvocationTargetException;
	import java.lang.reflect.Method;

	public class UserBeanHandlerTwo {
		public static void main(String args[]) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, 
		InvocationTargetException{
		
			UserBean ub=new UserBean();
			PropertyDescriptor pd=new PropertyDescriptor("name",UserBean.class);
			Method writeMethod=pd.getWriteMethod();
			writeMethod.invoke(ub,"peter");
			Method readMethod=pd.getReadMethod();
			Object str=readMethod.invoke(ub);
			System.out.println(str);
		}
	}


Transformer-Based Attention Networks for Continuous Pixel-Wise Prediction 基于Transformer注意力网络连续像素级与估计 Transformer-Based Attention Networks for Continuous Pixel-Wise Prediction 基于Transformer注意力网络的连续的像素级的 阅读详情

相关推荐

【Diffusion分割】医学图像分割中去噪扩散技术

扩散模型(DPM)在图像生成方面表现出了卓越的性能,其性能往往优于其他生成模型。自其问世以来,强大的噪声-图像去噪管道已被扩展到各种判别任务中,包括图像分割。在医学成像中,图像往往是大型三维扫描图像,由于内存消耗大、迭代采样过程耗时,使用 DPM 对一幅图像进行分割的效率极低。在这项工作中,我们提出了一种(LDSeg),可在潜空间中执行扩散,用于医学影像分割。我们。潜空间条件扩散不仅能确保对多标签对象进行精确的 n-D 图像分割,还能缓解基于 DPM 的传统分割法的主要潜在问题:(。

qq_43583311的博客 1171

Java研学-反射与内省

通过指定类的字节码文件获取对应的字节码对象;通过该对象调用类中的成员。

zhlyxx的博客 843

publisher与subscriber话题的消息类型md5sum不一致问题

[ERROR] [1604235557.591296096]: Client [/range_vision_fusion_01] wants topic /detection/vision_objects to have datatype/md5sum [autoware_msgs/DetectedObjectArray/13415342e539aa36ea9a6f04ffaf39b4], but our version has [autoware_msgs/DetectedObjectArray/c16a

cxhmike的博客 6620

Java反射与内省:深入理解动态编程

Java反射与内省是Java编程语言中用于实现动态编程的重要特性。

qq_61984546的博客 375

ADB详细(从下载安装到灵活运用)

ADB(Android Debug Bridge)是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。可以在Android SDK/platform-tools中找到 adb 工具或下载ADB Kits。

LiuYong_01的博客 10万+

【Matlab深度学习】GPU加速实战:从环境配置到性能优化

本文详细介绍了如何在Matlab中为深度学习任务配置GPU加速环境并进行性能优化。文章从GPU加速的必要性讲起,手把手指导安装NVIDIA驱动、CUDA和cuDNN核心三件套,并验证环境。重点讲解了如何利用gpuArray将数据和模型迁移至GPU,以及通过内存优化、计算优化和多GPU并行等策略充分释放GPU算力,大幅缩短深度学习模型的训练时间。

weixin_29061465的博客 491

Java反射——内省(Introspector)以及BeanUtils内省框架

讨论内省的前提是需要了解Java中的反射,如果需要了解反射的话,可以点击下方的文章 Java中的反射机制介绍 为什么要学内省? 开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以JDK里提供了一套API,专门用于操作java对象的属性。既然内省是专门用于操作java对象属性的,那首先得搞懂什么是对象的属性 1、什么是java对象的属性呢...

曹举的个人博客 1万+

C语言手写HTTPD网站服务器

零基础手写C语言http网站服务器,快速入门C/C++后端开发、服务器开发。

程序员Rock的博客 1万+

java反射和内省

java中一个强大的功能,莫过于反射了。通常我们看看的Struct2、Struct1、Spring、Hibernate等等集合无一不使用了反射机制。那么什么是反射呢,到底有什么用呢? 一、反射机制概念    简单的讲,反射就是通过把指定的类中各种元素成分都映射成相关的反射包中的相应类,使得我们可以动态的调用类的相应成员,比如构造方法、成员方法、成员变量等。它被视为动态(或准动态)语言的

自有贵人相助 2561

Android11车机系统海外项目资源包RRO方案优化

本文介绍了汽车设置应用如何通过Android RRO(运行时资源叠加)方案实现多车型差异化资源管理。针对不同车型(国内/海外、轿车/SUV)和配置(方向盘、轮毂等),采用产品变体(productFlavors)构建不同APK版本,并通过JSON配置文件动态启用对应资源包。系统根据车辆下线配置自动匹配适用的资源叠加包,解决了硬编码判断带来的维护问题。该方案实现了资源的高效复用,同时支持灵活配置多种车型组合,为汽车行业多车型共平台开发提供了可扩展的技术实现。

shusuanly的博客 469

【Unity 实用工具篇】 | 滚动列表插件FancyScrollView,快速上手使用

FancyScrollView 是一款专为Unity引擎开发的高效滚动列表组件。它具有轻量级、可定制性强、性能优秀等特点。 使用FancyScrollView插件进行Unity项目开发,可以极大提升开发效率,尤其是在需要大量列表展示的场景下,如商城、目录列表、角色选择界面等。开发者可以将注意力集中在业务逻辑的实现上,而将界面渲染和交互部分交由FancyScrollView处理。 本文来介绍一下FancyScrollView的功能展示和基本使用方法。

努力前行,总会成为自己心中的那道光 3万+

java 反射和内省

1       反射和内省1.1    JAVA反射反射 (Reflection) ,JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。1.2    JAVA自省内省 (Introspector),是“看透class”的能力(内省、

xxdyynn163的专栏 1801

【数据集】ERA5(欧洲中期天气预报中心)再分析数据介绍及下载

简介EAR5数据集及下载步骤

WW、forever的博客 1万+

java 内省 反射_Java的反射和内省

1.反射反射是指在运行过程中,可以获取任意类的属性和方法信息;对于任意对象,都可以获取调用其任意方法;这种动态获取类信息和动态调用对象方法的方式称为Java语言的反射机制;public class ReflectTest {public static void main(String[] args) {User user = new User();try {Field nameField = us...

weixin_39996478的博客 176

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

Java内省和反射浅谈

Java内省和反射浅谈 一、什么是内省?   内省(Introspector)是Java语言对JavaBean类属性、事件的处理方法   例如类User中有属性name,那么必定有getName,setName方法,我们可以通过他们来获取或者设置值,这是常规操作。   Java提供了一套API来访问某个属性的getter/setter方法,这些API存放在java.beans中 二、什么...

Jaylon Wang的专栏 341

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java的内省和反射

原文地址:http://java.chinaitlab.com/base/831819.html   相对而言,反射比内省更容易理解一点。用一句比较白的话来概括,反射就是让你可以通过名称来得到对象 ( 类,属性,方法 ) 的技术,这种技术比内省机制使用范围更广泛。例如我们可以通过类名来生成一个类的实例;知道了方法名,就可以调用这个方法;知道了属性名就可以访问这个属性的值。 内省是Java语言对...

tiger的专栏 182

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java反射和内省

看到类的所有东西。

weixin_45146105的博客 1020

Java的反射和内省的区别

反射 反射就是运行时获取一个类的所有信息,可以获取到.class的任何定义的信息(包括成员 变量,成员方法,构造器等) 可以操纵类的字段、方法、构造器等部分。 内省 内省基于反射实现,主要用于操作JavaBean,通过内省 可以获取bean的getter/setter 生活中 反射就像我们照镜子,照镜子时候 你的所有信息会毫无出错毫无保留的反射到镜子中,而java中反

zhanjixun 8359

JAVA内省和反射

内省 Wiki 定义 在计算机科学中,内省是指计算机程序在运行时,检查对象类型的一种能力,通常也可以称作运行时类型检查 java定义 从 java Bean的角度来看,这里的对象就是bean对象,主要关注点是属性、方法和事件,也就是运行时可以获取到相应的信息今夕一些处理 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EXfeSdlZ-1647321008695)(/Users/bingye/Library/Application Support/typora-user

User_meng的博客 662

JAVA语言的反射和内省

很多朋友在深入的接触JAVA语言后就会发现这样两个词:反射(Reflection)和内省(Introspector),经常搞不清楚这到底是怎么回事,在什么场合下应用以及如何使用?今天把这二者放在一起介绍,因为它们二者是相辅相成的。反射相对而言,反射比内省更容易理解一点。用一句比较白的话来概括,反射就是让你可以通过名称来得到对象(类,属性,方法)的技术。例如我们可以通过类名来生成

Alhu的专栏 5125

java内省的意思,java内省机制 + 内省是什么 + 内省实现方式 + 和反射的区别

见:https://zhidao.baidu.com/question/434288330.html、http://blog.youkuaiyun.com/u014394715/article/details/51217821、http://blog.youkuaiyun.com/hahalzb/article/details/597242一、内省是什么、实现方式:内省(Introspector)是Java语言对Bean...

weixin_34885009的博客 314

java的反射和内省机制

前几天看一本提到了JAVA的反射机制,由于过于概念不能很好理解.没想到在网络编程中又碰到了这个问题.看来不能回避了,要好好去学习一下了.反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学赋予了反射概念新的含义,但是,从现象上来说,它们确实有某些相通之处,这些有助于我们的理解。在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来

2129

java内省的意思_java内省和反射的区别

展开全部经过多方面的资料搜集整理,写下了这篇文章,本文主要讲解java的反射和内e68a843231313335323631343130323136353331333363366237省机制,希望对大家有点帮助,也希望大家提出不同的看法!1).内省(Introspector)是 Java 语言对 Bean 类属性、事件的一种缺省处理方法。例如类 A 中有属性 name, 那我们可以通过 getNa...

weixin_34741145的博客 186

java内省和反射机制_Java内省和反射机制三步曲之 - 内省

经过多方面的资料搜集整理,写下了这篇文章,本文主要讲解java的反射和内省机制,希望对大家有点帮助,也希望大家提出不同的看法!1).内省(Introspector)是 Java 语言对 Bean 类属性、事件的一种缺省处理方法。例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。通过 getName/setName 来访问 name 属性,这...

weixin_29587015的博客 311
上一篇: java的反射机制
下一篇: java读取Properties文件六种方法
君子陌
博客等级 码龄17年 8粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值