数组与Object的关系及其反射类型,数组反射应用实例,通过Array类实现数组的反射

Java反射中的Array类,java.lang.reflect包下的Array类 今天我们聊一聊java.lang.reflect包下的Array类,重点关注其中的newInstance方法。 1、Array类的简单使用 java.lang.reflect包下除了提供Method(方法)、Constructor(构造器)、Filed(成员变量)这三个类,还提供了Array类,Array对象可以代表所有的数组,可通过Array类来动态创建数组,该类提供了以下类方法: ... 阅读详情



package com.lianxi;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * 数组与Object的关系,及其反射类型
 * 
 * Array:可以对数组进行反射的类
 * 
 * 数组的反射:
 * 	相同数据类型,相同维度的数组的Class都属于同一个
 * 
 * @author zjw
 */
public class LianXi {
	public static void main(String[] args) throws Exception {
		method();
	}
	public static void method() throws Exception{
		//相同数据类型,相同维度的数组的Class都属于同一个
		int[] a={43,4,4,555,6,6777,7}; 
		int[] b={432,4321,43434,34342356,545432543};
		System.out.println(a.getClass()==b.getClass());//返回true,表明是相同的Class
		int[][]c={{3,4,5},{4324,432,432},{5435,654}};
//		System.out.println(a.getClass()==c.getClass());//维数不同,编译时期就会报错,不能编译通过,表明是不同的Class
		String[] str={"fdsa","fds","fdsaa","fdaf","fdsa"};
//		System.out.println(a.getClass()==str.getClass());//数据类型不同,编译时期就会报错,不能编译通过,表明是不同的Class
	
		System.out.println(a.getClass().getName());//返回的是"[I",表示是一位数组,"I"表示整形
		
		System.out.println(a.getClass().getSuperclass().getName());//获取父类的Class的名称,返回的是  java.lang.Object
		System.out.println(str.getClass().getSuperclass().getName());//获取父类的Class的名称,返回的是  java.lang.Object,两者是一样的,因为他们的父类都是Object
		
		Object obj1=a;//a代表一维数组,是Object
		Object obj2=str;//字符串数组中存放的是字符串,是Object
//		Object[] obj3=a;//这样会报错,因为该数组为一维数组,数组中的数据是int,属于基本数据类型,不是Object
		Object[] obj4=str;//字符串数组中存放的是String,继承于Object,
		Object[] obj5=c;//该数组为二维数组,可以理解为是一个一维数组中存放的是一位数组,而数组是Object,所以可以这样写
		
		/*
		 * 说明Arrays.asList();
		 * 在JDK1.4中,为Arrays.asList(Object[] obj);为Object数组
		 * 在JDK1.5以后,为Arrays.asList(T... obj);为可变参数
		 */
		System.out.println(a);//这样打印的都是其HashCode
		System.out.println(str);//这样打印的都是其HashCode
		
		System.out.println(Arrays.asList(a));//注意,这里因为传入的参数为一维整形数组,首先会按照JDK1.4的方式进行运行,但一维整形数组不是Object数组,
		//所以就会按照JDK1.5的可变参数就行处理,就把该一维数组当成一个对象,进行返回了,所以返回的是对象的HashCode
		System.out.println(Arrays.asList(str));//这里因为字符串数组中是字符串,字符串String继承于Object,所以字符串数组就是Object数组,所以会返回其值
	System.out.println("----------------------------------------------------------------------");
		//调用method_reflect();
//		method_reflect(c);//打印的是该二维数组中每个一维数组的HashCode值
		method_reflect(str);//打印的是该字符串数组中每个字符串
		method_reflect(a);//打印的是该一维整形数组中的每个数
	}
	//数组反射实例
	public static void method_reflect(Object obj){
		Class cla=obj.getClass();
		if(cla.isArray()){//判断此obj的Class是否是数组
			int length=Array.getLength(obj);//通过Array.getLength(obj)方法获取该数组的长度
			for (int i = 0; i < length; i++) {
				System.out.println(Array.get(obj,i));//通过Array获取值
			}
		}else{//不是数组的话,直接打印
			System.out.println(obj);
		}
	}
}
 


Java反射—Array类的使用 不用说大家也知道java.lang.Array是对Java反射包中数组操作的一个类。JavaSE8的文档中对Array的描述是这样说的: The Array class provides static methods to dynamically create and access Java arrays. Array类提供静态方法来动态创建和访问Java数组。访问不难理解,动态创建可以细看一下。 让我们先看看java.util.Arrays 注意是Arrays,相信有些小伙伴已经用过很多次这个 阅读详情

相关推荐

Java反射数组操作:Array类深度解析与应用实践

Java反射机制是框架开发中的核心技术,通过运行时类型信息实现动态编程。其中数组操作是反射体系的重要应用场景,java.lang.reflect.Array类提供了动态创建、访问多维数组等核心能力。在ORM框架、序列化工具等需要处理未知类型数组的场景下,Array类的newInstance()和get/set方法能显著提升代码灵活性。结合Java8 Stream API使用时,还能实现更优雅的函数式编程。通过合理使用Array类,开发者可以构建类型自适应的通用组件,解决动态代理、AOP实现中的参数处理难题。

weixin_30512965的博客 338

前端传数组参数出现object

1.首先去打印自己传的东西是否正确 2.如果正确,那么就使用JSON.stringify()转换为json字符串 正确的参数是这个样子滴

你离优秀差多少 1888

MODTRAN5.2.1安装配置

MODTRAN5.2.1安装配置

Home 4265

Object和数组之间的关系

所有的数组(一维和多位数组),包括基本数据类型的数组的父类都是Object类,如int a[]=new int[6];Object b=a;是正确的,通过System.out.println(a.getClass().getSuperclass().getName());的输出结果java.lang.Object可以得到认证。

u012486727的专栏 673

基于YOLOv8和PaddlepaddleOCR的微信截图聊天记录提取

本文提出了一种基于YOLOv8和PaddleOCR的微信聊天记录提取方法。首先使用YOLOv8n模型分割出聊天气泡(针对深浅色模式分别训练),通过合成数据集增强模型鲁棒性,召回率达0.995。随后采用PP-OCRv5进行文本识别,利用坐标匹配将气泡内文本送入识别队列,短长文本平均置信度分别>0.98和>0.95。文中特别强调了PaddleOCR不同版本的输出格式差异及适配方案,建议使用3.0+版本。该方法有效解决了直接OCR识别易受干扰的问题,通过气泡分割+文本定位的两阶段策略显著提升了识别准确

2401_87383958的博客 2357

地震数据可视化必备:5分钟读懂SEGY道头字段全解析(含坐标定位指南)

本文深入解析了SEGY文件格式中道头坐标字段的提取与可视化方法。针对地震数据处理中的常见痛点,详细介绍了sx/sy、gx/gy等关键坐标字段的二进制解析、比例因子应用、单位转换及常见问题解决方案,并提供了实用的Python代码示例,帮助开发者实现从SEGY文件到三维空间可视化的完整流程。

echo99的专栏 1011

【踩坑】后端返回数据显示[object Object]怎么处理

今天遇到的超无语的坑 我从后端反了一组表格数据给前端,然后前端拿到后就是这样 然后我拿不到数据,调了半天,也试过了网上说的JSON.stringify()。根本没用,最后百度了好久发现居然是因为我在前面加了个字符串 因为代码中有加号运行符,在这种情况下,他会先调用toString()方法,将其他类型的东西转化为字符串,再和原始字符串拼接成一个字符串。 ......

seeeeeeeeeee的博客 9219

Zemax实战:手把手教你设计一个40倍、NA0.65的显微物镜(附初始结构文件)

本文详细介绍了使用Zemax设计40倍、NA0.65显微物镜的完整流程,从初始结构搭建到优化验证,涵盖光学设计的关键技巧和实战经验。通过分阶段优化策略和公差分析,帮助工程师快速掌握高倍显微物镜的设计方法,提升光学系统性能。

weixin_42525369的博客 344

本地存储的数据变成“[object Object]”解决方法以及形成原因

会默认将Object对象转换成'[Object Object]'字符串。获取存储到的本地数据拿到的是“

m0_63542260的博客 2086

PLC与变频器联动控制:从开关量、模拟量到通讯的接线与编程实战

在工业自动化系统中,电机调速控制是核心需求之一,其关键在于实现可编程逻辑控制器(PLC)与变频器之间的可靠联动。其基本原理是通过PLC输出控制信号,由变频器接收并驱动电机按设定速度运行。这项技术的核心价值在于实现电机的软启停、精确调速与节能控制,广泛应用于风机、水泵、传送带及精密张力控制等场景。其中,开关量控制以其接线简单、抗干扰能力强的特点,成为基础且可靠的方案;而模拟量控制则能实现无级平滑调速,满足更高精度的工艺要求。本文以西门子、三菱等主流品牌为例,深入解析了这两种主流控制方式的硬件接线、参数设置与梯

1270

微信小程序 “net::ERR_CONNECTION_REFUSED” 报错大揭秘与破解之道

在微信小程序开发与运行过程中,“net::ERR_CONNECTION_REFUSED” 报错是开发者常遇难题。该错误意味着小程序与服务器连接建立失败,会导致功能无法使用、数据加载异常等问题,严重影响用户体验和业务运转。本文系统剖析此错误,从网络环境不佳、服务器异常、小程序配置有误等常见触发场景入手,提供网络、服务器、配置、代码等多维度排查步骤,给出针对性解决策略,如修复网络、处理服务器故障、修正配置与代码错误,还提出开发与运维阶段的预防措施,助力开发者高效解决该报错问题。

邓邓子的博客 6135

java反射 数组类型_Java反射—Array类的使用

有关Java反射的另外的文章:https://www.jianshu.com/nb/29780510不用说大家也知道java.lang.Array是对Java反射包中数组操作的一个类。JavaSE8的文档中对Array的描述是这样说的:The Array class provides static methods to dynamically create and access Java arra...

weixin_32705179的博客 492

蓝牙协议栈详解(3)——BTstack

BTstack是一个轻量级蓝牙协议栈,支持经典蓝牙(BR/EDR)和低功耗蓝牙(BLE)。它采用事件驱动模型,可运行在MCU/CPU上,通过HCI接口与蓝牙控制器通信。协议栈包含完整的蓝牙协议层支持,如L2CAP、RFCOMM、ATT/GATT等,并提供丰富的示例代码。 主要特点包括模块化设计、开源授权、支持多种HCI传输方式(UART/USB)和操作系统适配。开发时需要关注事件驱动编程模型、内存配置优化、HCI传输稳定性等问题。典型应用场景包括SPP串口通信、BLE外设开发等。 使用建议从最小示例开始,逐

嵌入式软硬件叶玄 293

23对接收数组参数的成员方法进行反射24 数组与Object的关系及其反射类型25 数组的反射应用...

  23对接收数组参数的成员方法进行反射   package cn.zyj23.review; import java.lang.reflect.Method; public class ReflectTest { public static void main(String[] args) throws Exception { //Te...

不积跬步 无以至千里 不积小流 无以成江海 159

Android Jetpack 最全面试题及参考答案

要使用 WorkManager 定义一个异步任务,以下是详细步骤。首先,需要创建一个继承自 Worker 类的自定义类,这个类代表了要执行的具体任务逻辑。// 在这里编写具体的任务逻辑,比如从网络下载文件try {在上述代码中,doWork方法就是任务的核心执行逻辑所在,这里模拟了从给定的 URL 下载文件到本地的操作,若下载成功返回,若出现异常则返回。然后,在需要调度任务的地方,比如在某个 Activity 或者 Fragment 中,通过构建 WorkRequest 来安排任务执行。

大模型大数据攻城狮的专栏 1895

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数组与Object的关系及其反射类型

数组与Object的关系及其反射类型。

像风一样自由 1216

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java反射机制下Array类的应用指南!

在Java反射机制中,数组作为一种特殊对象类型,其动态操作需要专门工具支持。无需预定义类型,可在运行时根据Class对象生成任意维度数组通过泛化方法处理所有类型数组(包括基本类型)动态调整已存在数组的长度直接操作数组元素而不依赖具体类型声明不用说大家也知道是对Java反射包中数组操作的一个类。JavaSE8的文档中对Array的描述是这样说的:Array类提供静态方法来动态创建和访问Java数组。访问不难理解,动态创建可以细看一下。

2401_87878486的博客 686

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

蓝牙模块HM-10手册

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

Java反射—Array类使用

有关Java反射的另外的文章:https://blog.csdn.net/ilo114/article/category/8633303 不用说大家也知道java.lang.Array是对Java反射包中数组操作的一个类。JavaSE8的文档中对Array的描述是这样说的: The Array class provides static methods to dynamically create ...

苡仁 404

Java 数组反射(Array Reflection)

1. 在不确定某个参数或对象是否是数组的时候,就可以使用发射机制,把该对象的Class对象传给Array.isArray(Class) 方法进行判断。通过Class对象的 getComponentType() 方法可以进一步知道数组组件的具体类型,数组如果是多维的话可以递归调用Array.isArray; 2.Array.getLength(class)可以得到数组的大小; 3.可以运行时利用

博观约取 3443

java反射 数组类型_Java反射-数组

通过反射使用数组有时会比较棘手。特别是需要获得一个特定类型数组的Class对象,如int[]等。本文将讨论如何通过反射创建数组和获得他们的Class对象。注意:本文在阅读Eyal Lupu的博客"Two Side Notes About Arrays and Reflection"后已更新,他的博客是本文第一个版本的评论。当前版本考虑了他的评论内容。java.lang.reflect.Array数...

weixin_39779537的博客 1332

Java基础加强第二讲 反射(下)——数组的反射

具有相同维数和元素类型的数组属于同一个类型,即具有相同的Class实例对象(此处比较与值无关)。例如, 此处,我再介绍两个方法,如下: 方法 描述 public String getName() 以String的形式返回此Class对象所表示的实体(类、接口、数组类、基本类型或void)名称 public Class&amp;amp;lt;? super T&amp;amp;gt; getSuperclas...

李阿昀的博客 1390

Frida使用java.lang.reflect.Array类打印Java反射数组

通过frida进行java反射调用String的getBytes方法,得到了[B类型的引用无论如何尝试都无法打印输出其内容,甚至java.util.Arrays类的相关方法也无法正确输出之后刷到这篇文章了解到java.lang.reflect.Array类用于反射打印数组进而了解到另一篇文章,详细介绍了相关方法总之,通过反射获取到的数组,不能直接通过Arrays类操作,应该通过reflect包下的Array类操作。

OrientalGlass的博客 582
上一篇: 反射之Method类
下一篇: ArrayList 与HashSet的比较,及应用反射读取properties配置文件中的数据进行实例化再调用,以及类加载器的使用;还有HashCode的分析,及导致内存泄露,内存溢出的原因之一
King·Forward
博客等级 码龄14年 117粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

King·Forward

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值