java反射编写泛型数组代码

来源:互联网 发布:推荐几个潮男淘宝店 编辑:程序博客网 时间:2024/06/05 08:34

1.java.lang.reflect包中的Array类允许动态的创建数组。

2.首先获取到a数组的类对象。

3.使用Class的getCompnentType获取到数组对象。

4.int[]可以转换为objec。但是不能转换为object[] 对象数组。

package test;import java.lang.reflect.Array;public class ReflectTest {public static void main(String[] args) {int[] a = {1,2,3,4,5};a=(int[])goodArrayGrow(a);arrayPrint(a);String[] b = {"vito","beijing","s"};b=(String[])goodArrayGrow(b);arrayPrint(b);}static Object goodArrayGrow(Object a){Class class1=a.getClass();if(!class1.isArray())return null;Class compentType = class1.getComponentType();int length = Array.getLength(a);int newLength = length*11/10+10;Object newArrayObject = Array.newInstance(compentType, newLength);System.arraycopy(a, 0, newArrayObject, 0, length);return newArrayObject;}static void arrayPrint(Object a){Class class1=a.getClass(); if(!class1.isArray()) return;Class compentType = class1.getComponentType();int length = Array.getLength(a);System.out.print(compentType.getName()+"["+length+"]={");for(int i=0;i<Array.getLength(a);i++)System.out.println(Array.get(a, i)+"");System.out.println("}");}}

运行结果:

int[15]={1,2,3,4,5,0,0,0,0,0,0,0,0,0,0,}java.lang.String[13]={vito,beijing,s,null,null,null,null,null,null,null,null,null,null,}


0 0
原创粉丝点击