📜  Java中的反射数组类

📅  最后修改于: 2022-05-13 01:54:50.486000             🧑  作者: Mango

Java中的反射数组类

Java.lang.reflect 包中的Array类是Java Reflection的一部分。此类提供静态方法来动态创建和访问Java数组。它是一个最终类,这意味着它不能被实例化或更改。类名本身只能使用此类的方法。

Java.util.Arrays 类包含各种操作数组的方法(例如排序和搜索),而这个Java.lang.reflect.Array 类提供静态方法来动态创建和访问Java数组。这个 Array 类使数组保持类型安全。

类层次结构

java.lang.Object
 ↳ java.lang.reflect.Array

类声明

public final class Array extends Object

使用数组的语法

Array.;

Java反射数组类中的方法

S. No.MethodDescription
1Object get(Object array, int index)This method returns the value of the indexed component in the specified array object.
2boolean getBoolean(Object array, int index)This method returns the value of the indexed component in the specified array object as a boolean.
3byte getByte(Object array, int index)This method returns the value of the indexed component in the specified array object as a byte.
4char getChar(Object array, int index)This method returns the value of the indexed component in the specified array object as a char.
5double getDouble(Object array, int index)This method returns the value of the indexed component in the specified array object as a double.
6float getFloat(Object array, int index)This method returns the value of the indexed component in the specified array object as a float.
7int getInt(Object array, int index)This method returns the value of the indexed component in the specified array object as an int.
8int getLength(Object array)This method returns the length of the specified array object as an int.
9long getLong(Object array, int index)This method returns the value of the indexed component in the specified array object as a long.
10short getShort(Object array, int index)This method returns the value of the indexed component in the specified array object as a short.
11Object newInstance(Class componentType, int length)This method creates a new array with the specified component type and length.
12Object newInstance(Class componentType, int… dimensions)This method creates a new array with the specified component type and dimensions.
13void set(Object array, int index, Object value)This method sets the value of the indexed component of the specified array object to the specified new value.
14void setBoolean(Object array, int index, boolean z)This method sets the value of the indexed component of the specified array object to the specified boolean value.
15void setByte(Object array, int index, byte b)This method sets the value of the indexed component of the specified array object to the specified byte value.
16void setChar(Object array, int index, char c)This method sets the value of the indexed component of the specified array object to the specified char value.
17void setDouble(Object array, int index, double d)This method sets the value of the indexed component of the specified array object to the specified double value.
18void setFloat(Object array, int index, float f)This method sets the value of the indexed component of the specified array object to the specified float value.
19void setInt(Object array, int index, int i)This method sets the value of the indexed component of the specified array object to the specified int value.
20void setLong(Object array, int index, long l)This method sets the value of the indexed component of the specified array object to the specified long value.
21void setShort(Object array, int index, short s)This method sets the value of the indexed component of the specified array object to the specified short value. 

如何使用Java.lang.util.reflect.Array 类创建数组?

使用reflect.Array类创建数组与通常的方式不同。创建这样一个数组的过程如下:

  • 获取要创建的数组的大小
  • 要创建一个数组(比如 X 类),请使用 Array 类的 newInstance() 方法将 X 类作为数组的类型传递,并将数组的大小作为参数传递。

句法:

X[] arrayOfXType = (X[]) Array.newInstance(X.class, size);

其中 X 将替换为数组的类型,如 int、double 等。

  • 此方法返回给定大小的 Object 数组,然后转换为所需的 X[] 类型。
  • 因此,已创建所需的 X 类型数组。

下面是一个使用 Array 类创建大小为 5 的整数数组的示例:

示例:创建一个大小为 5 的整数数组:

Java
// Java code to create an integer array of size 5,
// using the Array class:
 
import java.lang.reflect.Array;
import java.util.Arrays;
 
public class GfG {
    public static void main(String[] args)
    {
 
        // Get the size of the array
        int sizeOfArray = 5;
 
        // Create an integer array
        // using reflect.Array class
        // This is done using the newInstance() method
 
        int[] intArray = (int[])Array.newInstance(
            int.class, sizeOfArray);
       
        // Printing the Array content
        System.out.println(Arrays.toString(intArray));
    }
}


Java
// Java code to add an element into an integer array,
// using the Array class:
 
import java.lang.reflect.Array;
import java.util.Arrays;
 
public class GfG {
    public static void main(String[] args)
    {
 
        // Get the size of the array
        int sizeOfArray = 3;
 
        // Create an integer array
        // using reflect.Array class
        // This is done using the newInstance() method
        int[] intArray = (int[])Array.newInstance(
            int.class, sizeOfArray);
 
        // Add elements into the array
        // This is done using the setInt() method
        Array.setInt(intArray, 0, 10);
        Array.setInt(intArray, 1, 20);
        Array.setInt(intArray, 2, 30);
 
        // Printing the Array content
        System.out.println(Arrays.toString(intArray));
    }
}


Java
// Java code to retrieve an element from an integer array,
// using the Array class:
 
import java.lang.reflect.Array;
import java.util.Arrays;
 
public class GfG {
    public static void main(String[] args)
    {
 
        // Get the size of the array
        int sizeOfArray = 3;
 
        // Create an integer array
        // using reflect.Array class
        // This is done using the newInstance() method
        int[] intArray = (int[])Array.newInstance(
            int.class, sizeOfArray);
 
        // Add elements from the array
        // This is done using the getInt() method
        Array.setInt(intArray, 0, 10);
        Array.setInt(intArray, 1, 20);
        Array.setInt(intArray, 2, 30);
 
        // Printing the Array content
        System.out.println(Arrays.toString(intArray));
 
        // Retrieve elements from the array
        // This is done using the getInt() method
        System.out.println("Element at index 0: "
                           + Array.getInt(intArray, 0));
        System.out.println("Element at index 1: "
                           + Array.getInt(intArray, 1));
        System.out.println("Element at index 2: "
                           + Array.getInt(intArray, 2));
    }
}


输出
[0, 0, 0, 0, 0]

如何使用Java.lang.util.reflect.Array 类在数组中添加元素?

与创建数组一样,使用 reflect.Array 类在数组中添加元素也不同于通常的方式。在这样的数组中添加元素的过程如下:

  • 获取要添加的元素的值。
  • 获取要添加元素的索引。
  • 要在数组中添加元素(比如 X 类),请使用 Array 类的 setX() 方法,其中 X 将替换为数组的类型,例如 setInt()、setDouble() 等。此方法在下面的语法中,将 X[] 作为第一个参数,将添加元素的索引作为第二个参数,将元素作为第三个参数。

句法:

Array.setX(X[], indexOfInsertion, elementToBeInserted);

其中 X 将替换为数组的类型,如 int、double 等。

  • 此方法在此数组中的指定索引处插入元素。
  • 因此,所需的元素已被插入到数组中。

下面是一个使用 Array 类将元素添加到整数数组中的示例:

示例:将元素添加到整数数组中:

Java

// Java code to add an element into an integer array,
// using the Array class:
 
import java.lang.reflect.Array;
import java.util.Arrays;
 
public class GfG {
    public static void main(String[] args)
    {
 
        // Get the size of the array
        int sizeOfArray = 3;
 
        // Create an integer array
        // using reflect.Array class
        // This is done using the newInstance() method
        int[] intArray = (int[])Array.newInstance(
            int.class, sizeOfArray);
 
        // Add elements into the array
        // This is done using the setInt() method
        Array.setInt(intArray, 0, 10);
        Array.setInt(intArray, 1, 20);
        Array.setInt(intArray, 2, 30);
 
        // Printing the Array content
        System.out.println(Arrays.toString(intArray));
    }
}
输出
[10, 20, 30]

如何使用Java.lang.util.reflect.Array 类检索数组中的元素?

与创建数组一样,使用 reflect.Array 类检索数组中的元素也不同于通常的方式。在这样的数组中检索元素的过程如下:

  • 获取要检索元素的索引。
  • 要检索数组中的元素(例如 X 类),请使用 Array 类的 getX() 方法,其中 X 将替换为数组的类型,例如 getInt()、getDouble() 等。此方法在下面的语法中,将 X[] 作为第一个参数,将检索元素的索引作为第二个参数。

句法:

Array.getX(X[], indexOfRetrieval);

其中 X 将替换为数组的类型,如 int、double 等。

  • 此方法从该数组中检索指定索引处的元素。
  • 因此,已从数组中检索到所需的元素。

下面是一个使用 Array 类从整数数组中检索元素的示例:

示例:从整数数组中检索元素:

Java

// Java code to retrieve an element from an integer array,
// using the Array class:
 
import java.lang.reflect.Array;
import java.util.Arrays;
 
public class GfG {
    public static void main(String[] args)
    {
 
        // Get the size of the array
        int sizeOfArray = 3;
 
        // Create an integer array
        // using reflect.Array class
        // This is done using the newInstance() method
        int[] intArray = (int[])Array.newInstance(
            int.class, sizeOfArray);
 
        // Add elements from the array
        // This is done using the getInt() method
        Array.setInt(intArray, 0, 10);
        Array.setInt(intArray, 1, 20);
        Array.setInt(intArray, 2, 30);
 
        // Printing the Array content
        System.out.println(Arrays.toString(intArray));
 
        // Retrieve elements from the array
        // This is done using the getInt() method
        System.out.println("Element at index 0: "
                           + Array.getInt(intArray, 0));
        System.out.println("Element at index 1: "
                           + Array.getInt(intArray, 1));
        System.out.println("Element at index 2: "
                           + Array.getInt(intArray, 2));
    }
}
输出
[10, 20, 30]
Element at index 0: 10
Element at index 1: 20
Element at index 2: 30