`

lang.reflect->java.lang.Array

阅读更多
数组反射功能依赖类java.lang.reflect.Array

提供的功能:
1、动态获取数组某个位置的值。
2、动态生成数组对象(一维或者多维)。
3、动态设置数组某个位置的值。

例子:
package array;

import java.lang.reflect.Array;
import java.util.Arrays;
/**
 * 测试Array 反射功能
 * @author xinchun.wang
 *
 */
public class ArrayReflect {
    public static void main(String[] args) throws SecurityException, NoSuchMethodException {
	int[] arr = new int[100];
	for (int i = 0; i < arr.length; i++) {
	    arr[i] = i * i;
	}
	//使用Array反射获取数组的长度
	int length = Array.getLength(arr);
	System.out.println(length);
	
	//使用Array反射获取数组的某个位置的值
	Object Obj = Array.get(arr, 10);
	System.out.println(Obj);
	
	//使用Array反射设置某个位置的值
	Array.set(arr, 20, new Integer(1));
	System.out.println(Arrays.toString(arr));

	//使用Array反射生成数组(一维数组)100 :数组的长度
	B[] obj = (B[]) Array.newInstance(B.class, 100);
	for (int i = 0; i < obj.length; i++) {
	    B h = obj[i];
	    System.out.println(h); // 都是null ,因为反射生成的都是引用
	}
	System.out.println(obj.length);

	//使用反射生成多维数组  其中 1 维:有2个B[]数组,每个数组总有4个B元素
	B[][] obj2 = (B[][]) Array.newInstance(B.class, 2,4);
	System.out.println(Arrays.toString(obj2));
    }
}

分享到:
评论

相关推荐

    Java.lang.reflect 包下常用的类及方法简介

    在Java编程语言中,`java.lang.reflect`包是核心库的一部分,它提供了运行时访问类、接口、字段和方法的能力。这个包对于理解和操作对象的动态特性至关重要,尤其是在实现反射机制时。反射允许我们在程序运行期间...

    4.反射-introdute.doc

    6. **Array类**:`java.lang.reflect.Array`提供了动态创建数组以及访问数组元素的静态方法。例如: ```java Object array = Array.newInstance(type, length); Array.set(array, index, value); // 设置数组元素...

    common-lang3.jar

    3. **反射操作**:`org.apache.commons.lang3.reflect`包提供了对Java反射机制的增强,如`MethodUtils`和`FieldUtils`,使得访问和操作类的成员更加简单。 4. **枚举处理**:`org.apache.commons.lang3.enums`支持...

    Java软件开发实战 Java基础与案例开发详解 15-1 反射 共13页.pdf

    - `java.lang.reflect.Array`: 封装数组信息的类。 #### 15.2 使用反射获取类信息 ##### 15.2.1 获取Class对象 要使用反射,首先需要获得`Class`对象。有几种常见的方式: 1. **通过对象的`getClass()`方法**: ...

    java反射机制的应用

    5. `java.lang.reflect.Array`:处理数组的静态类。 **四、应用场景** 1. **插件化开发**:动态加载插件中的类和资源,无需提前知晓具体实现。 2. **序列化/反序列化**:如JSON库Gson、Jackson,通过反射将对象...

    JDK中的设计模式

    - `java.lang.reflect.Array#newInstance()`:创建数组实例。 - `java.lang.reflect.Constructor#newInstance()`:创建实例。 ##### 原型模式 原型模式使用一个现有的实例作为原型,通过复制该原型对象来创建新的...

    Core.Java基础教程_13.高级编程-反射、动态代理与Annotation.pdf

    在Java中,反射主要通过`java.lang.reflect`包中的几个核心类来实现: 1. `Class&lt;T&gt;`:表示运行时的Java应用程序中的类和接口。每个类在Java虚拟机中都有一个对应的`Class`对象。我们可以通过`Object`类的`getClass...

    java反射机制详解

    Java反射机制的核心类位于`java.lang.reflect`包中,主要包括以下几类: 1. **Class类**:表示一个类的信息,是反射机制的基础。 2. **Field类**:表示类的成员变量或属性。 3. **Method类**:表示类的方法。 4. **...

    java 实现凯撒密码(csdn)————程序.pdf

    import java.lang.reflect.Array; import java.util.Arrays; import java.util.Scanner; public class Home { public static void main(String[] args) { System.out.println("请输入明文:"); Scanner input = ...

    java反射实例

    在Java中,反射主要通过`java.lang.Class`,`java.lang.reflect.Method`,`java.lang.reflect.Field`,以及`java.lang.reflect.Constructor`等类来实现。以下是一些关于Java反射的重要知识点: 1. **Class对象**:...

    java深度复制源代码

    import java.lang.reflect.Array; import java.lang.reflect.InvocationTargetException; import java.sql.Timestamp; import java.util.Collection; import java.util.Date; import java.util.Map; import java....

    反射机制用Java描述下载资料

    import java.lang.reflect.Array; public class ArrayTest { public static void main(String[] args){ try{ //创建一个元素类型为String,长度为10的数组 Object arr=Array.newInstance(String.class,10)...

    java课本编写资料下载

    - `java.lang.reflect.Array`类提供了许多原生方法,如`newInstance`,用于增强对数组的操作。这表明Java对数组的支持是通过专用指令完成的,而不是通过标准的Java方法。 7. **多维数组的创建**: - 创建多维数组...

    jsp结合javabean的实践

    &lt;%@ page import="java.lang.reflect.Array"%&gt; &lt;%@ page import="java.lang.Long"%&gt; &lt;%@ page import="java.util.HashMap"%&gt; &lt;jsp:useBean id="rd" class="songyc.ReadFile" scope="application"&gt; ...

    java 与 flex 数据转换

    - ActionScript 的 `Array` 可以映射到 Java 的 `java.util.Collection` 或数组类型(`java.lang.reflect.Array`)。 - Java 中的集合和数组也能转换为 ActionScript 的 `Array`。 8. **Object** 和 `Map`: - ...

    678.676.JAVA基础教程_动态代理与Java8新特性-Stream的实例化(678).rar

    在Java中,我们可以使用java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来创建动态代理。Proxy类用于生成代理对象,而InvocationHandler则处理方法调用。通过实现InvocationHandler,我们可以...

    vs没报错leetcode报错-leetcode:leetcode

    java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /* * JDK 动态代理 * */ public class dynamicProxyUsingJDK { public static void main(String[] args) ...

    java反射........

    这一特性基于Java的`java.lang.reflect`包,提供了对类和对象深层次操作的能力,极大地扩展了Java的灵活性和可扩展性。 在Java中,反射主要涉及以下核心组件: 1. **Class对象**:每个类在内存中都有一个对应的...

    圣思园 reflection(Java反射) 课件

    Java的`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口用于实现这一机制。 在Java中,反射机制虽然提供了强大的功能,但也带来了一些潜在的问题,如性能损失、安全风险和代码可读性降低。...

    Java深度历险(七)——Java反射与动态代理.docx

    在处理数组时,`java.lang.reflect.Array`类提供了一系列静态方法,用于创建、访问和操作数组。这使得我们可以在运行时动态地操作数组内容,如同直接访问数组一样。 Java 5引入了泛型,但因为类型擦除,运行时无法...

Global site tag (gtag.js) - Google Analytics