打卡-反射(三)

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

 1 import java.lang.reflect.Method;
 2 import java.util.*;
 3 class Person {
 4     public void s(){
 5    System.out.println("测试调用功能");
 6     }
 7 }
 8 class test{
 9     // “反射就是把java类中的各种成分映射成相应的java类”,反射虽然可以逆向控制程序的执行,但这种方式会导致程序运行时间变长,效率降低。
10 //所以在使用反射方法时,要考虑到这对程序运行效率的影响。
11 }
12 public class work_fanse {
13     
14     public static Object goodcopyOf(Object a) {
15         int newLength;
16         Scanner x=new Scanner(System.in);
17         newLength=x.nextInt();
18         Class cl=null;
19         cl=a.getClass();
20         //isArray()判断是否为数组
21         if(!cl.isArray()) {
22             return null;
23         }
24         //数组的class对象的getComponentType()方法可以取得一个数组的Class对象,
25         //通过Array.newInstance()可以反射生成数组对象
26         Class Type=cl.getComponentType();
27         //获取数组长度
28         int length=java.lang.reflect.Array.getLength(a);
29         //创建新的数组
30         Object newArray = java.lang.reflect.Array.newInstance(Type,newLength);
31         //arraycopy()实现将一个数组的指定个数元素复制到另一个数组中 
32         System.arraycopy(a,0,newArray,0,Math.min(length,newLength));
33         return newArray;
34         
35     }
36     public static void main(String[] args) {
37         Object a[]= {1,2,3,4,5};
38         System.out.println(new work_fanse().goodcopyOf(a));
39     }
40 
41 }

 

posted @ 2019-05-12 12:37  一个人的姐姐  阅读(101)  评论(0编辑  收藏  举报