java反射机制是一种应用范围广泛的技术实现

反射机制可应用于任何数据类型,不论类对象还是基本数据类型。

//Class类:

1. public Class> getComponentType();// 返回数组元素的类型,若不是数组,将返回null;

// Array类:.lang.reflect.Array;// 定义数组类;

public final class Array

extends Object;

1.public static Object get(Object array, // 获取数组指定位置的值

int index)

throws IllegalArgumentException,

ArrayIndexOutOfBoundsException;

2.public static int getLength(Object array) // 获取数组的长度

throws IllegalArgumentException;

3.public static Object newInstance(Class> componentType, // 新建一个数组(指定类型,指定长度)

int length)

throws NegativeArraySizeException;

4.public static void set(Object array, // 设置数组指定位置的值

int index,

Object value)

throws IllegalArgumentException,

ArrayIndexOutOfBoundsException;

// Object类:

public final Class> getClass();

———–获取数组的运行时类对象,反射对Array的支持;

package com.mldn;

import .lang.reflect.Array;

public class ArrayReflect

{

public static void main(String[] args) throws Exception

{

Class> c = null; // 声明Class对象

int[] array = {0, 1, 2, 3, 4, 5}; // 定义int[]

c = array.getClass(); // 获取数组的运行时对象

Class> cl = c.getComponentType(); // 获取数组元素的类型

System.out.println(“类型:” + cl.getName());

System.out.println(“长度:” + Array.getLength(array));

System.out.println(“第一个值:” + Array.get(array, 0));

Array.set(array, 0, 5); // 设置首元素的值;

System.out.println(“第一个值:” + Array.get(array, 0));

}

}

/*ubuntu@xu-desktop:~$ com.mldn.ArrayReflect

类型:int

长度:6

第一个值:0

第一个值:5

// Array 是反射reflect包中的类;

*/

————.lang.Array改变数组长度:

package com.mldn;

import .lang.reflect.Array;

public class ArrayReflect

{

public static void main(String[] args) throws Exception

{

int[] array = {0, 1, 2, 3, 4, 5}; // 定义int[]

int[] arr = (int[])arrayInc(array, 7); // 开辟新数组

print(arr); // 打印

String[] strArr = {“Hello”, “,world!”, “www.”, “k187.com”}; // 定义String[]

print((String[])arrayInc(strArr, 5));

}

public static Object arrayInc(Object array, int len) // 动态扩展数组

{

Class> c = array.getClass(); // 获取数组的运行时类对象

Class> type = c.getComponentType(); // 获取数组元素类型

int length = Array.getLength(array); // 获取数组长度

Object newarr = Array.newInstance(type, len); // 新建数组

System.arraycopy(array, 0, newarr, 0, length); // 原数组内容复制到新数组

return newarr;

}

public static void print(Object array)

{

Class> c = array.getClass(); // 获取运行时类对象

if (!c.isArray())

{

return; // 不是数组,返回终止程序

}

for (int x = 0; x {

System.out.print(Array.get(array, x) + ” “);

}

System.out.println();

}

}

/*ubuntu@xu-desktop:~$ java com.mldn.ArrayReflect

ubuntu@xu-desktop:~$ java com.mldn.ArrayReflect

0 1 2 3 4 5 0

Hello ,world! www. k187.com null

// Array 是反射reflect包中的类;

*/

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《java反射机制是一种应用范围广泛的技术实现
本文地址:https://www.zhiletu.com/archives-144.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微