反射的学习(二)----------利用反射实现通用扩展数组长度的方法

利用反射实现通用扩展数组长度的方法

  • 创建一个类,定义两个简单的扩展数组长度的方法
public void extendArrayLength_1(int[] a,int length) {
		//判断输入长度是否符合要求
		if (length<=a.length) {
			System.out.println("输入的长度不符合要求");
		} else {
			int[] b=java.util.Arrays.copyOf(a,length);//用copyOf方法将数组a复制给数组b,并指定长度
			System.out.println("原数组的长度为:" + a.length);
			System.out.println("扩展后数组的长度为:" + b.length);
		}
		
	}

	public void extendArrayLength_2(int[] a) {
		int[] b=new int[a.length*2];//直接将数组b的长度扩展为原数组的两倍
		System.arraycopy(a,0,b,0,a.length);//将数组a的值赋给数组b
		System.out.println("原数组的长度为:" + a.length);
		System.out.println("扩展后数组的长度为:" + b.length);
	}
  • 再创建一个类,利用反射实现通用扩展数组长度的方法
            Class c=Class.forName("Person");//反射Person类
			//调用方法
			Constructor cs=c.getConstructor();//获取无参数构造方法
			Object obj=cs.newInstance();//创建已经实例化的反射对象
			System.out.println("第一种方法:");
			Method m1=c.getDeclaredMethod("extendArrayLength_1", int[].class,int.class);//获取指定的extendArrayLength_1成员方法
			int a[]= {1,2,3,4,5};//原数组
			System.out.println("输入扩展后的数组长度:");
			Scanner scan=new Scanner(System.in);
			int b=scan.nextInt();
			m1.invoke(obj,a,b);//调用成员方法
			System.out.println("第二种方法:");
			Method m2=c.getDeclaredMethod("extendArrayLength_2", int[].class);//获取指定的extendArrayLength_1成员方法
			m2.invoke(obj,a);//调用成员方法
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值