Array是一个类的简写,全限定类名是java.lang.reflect.Array.
Array可以代表所有的数组,可以通过Array动态创建与修改里面的元素.
使用静态方法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]
赋值使用静态方法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"});
使用静态方法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));
可以通过强制类型转换使Array返回的Object对象转换为对应的数组.
var castIntArray = (int [])intArray;
var castStringArray = (String [][])stringArray;
这样可以当作一个普通数组使用.
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]);
}
}
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前题目:java反射Array的使用-创新互联
当前地址:https://www.cdcxhl.com/article32/djhcsc.html
成都网站建设公司_创新互联,为您提供外贸建站、软件开发、静态网站、搜索引擎优化、动态网站、小程序开发
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联