为了账号安全,请及时绑定邮箱和手机立即绑定

java反射Array的使用

标签:
Java

1.什么是Array

Array是一个类的简写,全限定类名是java.lang.reflect.Array.

2.Array有什么用

Array可以代表所有的数组,可以通过Array动态创建与修改里面的元素.

3.Array使用示例

(1)创建

使用静态方法newInstance()构造Object对象.方法如下:

public static Object newInstance(Class<?> element, int ... length);

第一个参数是代表元素的类,剩下的参数表示维数,一个参数表示一维数组,两个参数表示二维数组(数组的数组),参数的值代表维数的长度.

Object intArray = Array.newInstance(int.class,3);              //int [3]
Object stringArray = Array.newInstance(String.class,2,3);      //String [2][3]

(2)赋值

赋值使用静态方法set即可,参数为Array返回的Object对象,下标与对应的值.

public static void set(Object array,int index,Object value);
public static void setBoolean(Object array,int index,boolean b);
public static void setXxxx(Object array,int index,xxx);

其中最后一个表示对应的基本类型,第二个为boolean类型的示例.

Array.set(intArray,2,3);
Array.set(stringArray,1,new String[]{"123","456"});

(3)获取值

使用静态方法get,参数为Array返回的Object对象与下标.

public static Object get(Object array,int index);
public static boolean getBoolean(Object array,int index);
public static xxx getXxx(Object array,int index);

最后一个表示对应的基本类型,第二个为boolean类型的示例

System.out.println(Array.get(intArray,2));
System.out.println(Array.get(Array.get(stringArray,1),1));

(4)强制类型转换

可以通过强制类型转换使Array返回的Object对象转换为对应的数组.

var castIntArray = (int [])intArray;
var castStringArray = (String [][])stringArray;

这样可以当作一个普通数组使用.

4.完整代码

import java.lang.reflect.*;

public class test
{
    public static void main(String[] args) {
        var intArray = Array.newInstance(int.class, 3);
        var stringArray = Array.newInstance(String.class, 2,3);
        Array.set(intArray, 2, 3);
        Array.set(stringArray, 1, new String[] { "123", "456" });

        System.out.println(Array.get(intArray, 2));
        System.out.println(Array.get(Array.get(stringArray,1),1));

        System.out.println("-------cast-------");
        System.out.println(((int[]) intArray)[2]);
        System.out.println(((String [][])stringArray)[1][1]);
    }
}

5.运行结果

在这里插入图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消