`

Java反射: 数组

    博客分类:
  • java
阅读更多
java.lang.reflect.Array

   Java反射机制通过Array类来处理数组,结合java.lang.Class类,可以在运行时获取数组的相关信息。要和集合包中的java.util.Arrays区分开,Arrays类是一个数组工具类(排序、遍历数组,将数组转换为集合等)。

实例化数组

如果在编译时知道数组的类型(如int类型),使用new关键字实例化
float[] array = new float[3];


也可以使用反射:
float[] array = Array.newInstance(float.class, 3);

和new关键字类似,这个例子也创建了一个float类型的数组。

如果是运行时才知道类型,使用下面的方法:

Object array = Array.newInstance(componentType, length);

Array.newInstance()的第一个参数表示要创建什么类型的数组,第二个参数表示数组的大小。

访问数组

创建数组后,可以通过Array.set()和Array.get()来设置和获取数组中的元素:

float[] array = (float[]) Array.newInstance(float.class, 3);
Array.set(array, 0, 16.0f);
Array.set(array, 1, 12.4f);
Array.set(array, 2, 16.4f);

System.out.format("array[0]=%f\n", Array.get(array, 0));
System.out.format("array[1]=%f\n", Array.get(array, 1));
System.out.format("array[2]=%f\n", Array.get(array, 2));

输出:
array[0]=16.000000
array[1]=12.400000
array[2]=16.400000

判断传入的对象是不是数组

// obj is the instance passed in running time
boolean bArray = obj.getClass().isArray();


拿到数组的长度

// obj is the instance passed in running time
int length = java.lang.reflect.Array.getLength(obj);


判断数组元素的类型

// obj is the instance passed in running time
Class elementType = obj.getClass().getComponentType();

分享到:
评论

相关推荐

    java 反射中操作数组

    3. 创建新数组:`os = Array.newInstance(f1.getType().getComponentType(),5);` 4. 给数组赋值:`Array.set(os, 2, 5);` 5. 获取数组值:`System.out.println(Array.get(os, 2));` 在进行这些操作时,需要注意的是...

    java反射全解(反射原理+反射API详解+反射与数组+反射与泛型+反射源码与性能开销+反射优缺点+反射与内省)

    数组是 Java 语言中的一种基本数据结构,反射机制可以动态地获取数组的信息和调用数组的方法。 反射与泛型是指在反射机制中如何操作泛型。泛型是 Java 语言中的一种类型参数机制,反射机制可以动态地获取泛型的信息...

    Java技术对接收数组参数的成员方法进行反射

    总的来说,理解和掌握如何使用Java反射调用接收数组参数的方法,将有助于提升你在面对复杂编程问题时的灵活性和应变能力。通过实践和不断学习,你可以更熟练地运用反射技术,从而在编程中实现更多可能性。

    java反射机制学习(四):通过反射执行方法、操作属性、操作数组中的数据

    Java反射机制是Java编程语言中一个强大的特性,它允许运行时动态地获取类的信息并进行操作,如创建对象、调用方法、访问属性以及处理数组等。在本篇讲解中,我们将深入理解如何通过反射来执行方法、操作属性以及处理...

    java--数组.txt

    尽管数组本身没有显式的“length”字段,但可以通过反射机制获取到该数组的长度。例如,可以通过以下代码获取数组的长度: ```java int length = Array.getLength(arr); ``` 值得注意的是,数组的长度是一个固定值...

    Java反射机制2

    在“Java反射机制2”这个主题中,我们将深入探讨数组与Object的关系、成员方法的反射、成员变量的反射以及数组的反射应用。 1. 数组与Object的关系及其反射类型: 在Java中,所有数组都继承自Object类,这意味着...

    java反射知识点

    5.反射数组 6.通过反射配置文件内容 7.通过反射越过泛型检查 8.其他一些文本笔记 读者需要补充的知识点我来说一下,补充: 1.反射数组应用 2.反射main方法 3.反射代理(设计模式) 4.反射数据库操作 5.反射框架 6....

    Java方法反射调用demo

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...

    实例讲解Java编程中数组反射的使用方法

    以下是一个使用`ArrayReflect`工具类的示例,它展示了如何使用反射来操作数组: ```java public class ArrayReflect { public static void printArray(Object array) { Class<?> elementType = array.getClass()....

    Java 反射封装 JavaBean

    使用 Java 反射封装 JavaBean <br> 说明:这个程序在没有使用Hiberante时挺有用的 需要一个数据库查询语句 对应的JavaBean的全名(现在是Class,原来Class.getName()) 返回List包含多个JavaBean

    java反射经典实例

    - 例如创建一个Integer类型的数组: ```java Class<?> arrayClass = Array.newInstance(Integer.class, 10).getClass(); ``` 5. **接口与注解的反射** - 反射可以检查类是否实现了某个接口,也可以获取类上的...

    java反射.pdf

    ### Java反射机制详解 #### 一、什么是Java反射? Java反射是Java编程语言的一个特性,它允许运行时检查和操作程序结构(类、字段、方法等)。反射的主要用途包括但不限于:动态实例化对象、访问私有成员、调用...

    编程实践:Java进阶100例

    第四章:数组的应用; 第五章:面向对象的Java编辑; 第六章:接口与内部类; 第七章:集合的应用; 第八章:异常和反射; 第九章:初识AWT和Swing; 第十章:Swing中的常用组件; 第十一章:线程; 第十二章:I/O流...

    java教程-每日一课,27天java从入门到进阶

    精品java学习教程,原理讲解+源码实战 27天实现java从入门到进阶 第一天:语言环境 第二天:常量变量 第三天:流程控制 第四、五天:方法与数组 第六天:类 第七天:对象的出生 ...第27天:反射和设计模式

    JAVA面试宝典包含名词解释,常问问题。

    Java 是一种广泛使用的后端开发语言,其面试中常常涉及许多核心概念和技术。以下是对给定文件中提及的几个关键知识点的...在实际面试中,可能还会涉及到多线程、异常处理、设计模式、IO 流、网络编程、反射等更多主题。

    java反射机制文档及代码

    Java反射机制是Java编程语言中一个强大的特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用方法以及...

    Java反射调用方法

    Java反射是Java语言提供的一种强大的动态类型特性,它允许程序在运行时检查和操作类、接口、对象等的内部信息,包括但不限于获取类的方法、字段、构造器等,并能动态调用方法和修改字段值。这个特性使得Java具有了更...

    Java反射机制笔记(简单易懂)

    Java反射机制笔记 Java反射机制是Java语言中一个强大的功能,它允许程序在运行时检查和修改其自身的结构和行为。通过Java反射机制,我们可以在运行时获取类的信息,包括类的成员变量、方法、构造方法等,并可以动态...

Global site tag (gtag.js) - Google Analytics