打卡-反射
Posted tutu-winer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打卡-反射相关的知识,希望对你有一定的参考价值。
利用反射实现通用扩展数组长度的方法
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 }
以上是关于打卡-反射的主要内容,如果未能解决你的问题,请参考以下文章
第43题JAVA高级技术-反射实战3(动态设置类的私有属性)