zoukankan      html  css  js  c++  java
  • java_reflect_04

    反射操作数组:

    通过public Class<?> getComponentType()来取得一个数组的Class对象

    例:

    import java.lang.reflect.Array ;
    public class ClassArrayDemo{
        public static void main(String args[]) throws Exception{
            int temp[] = {1,2,3} ;// 声明一整型数组
            Class<?> c = temp.getClass().getComponentType() ;    // 取得数组的Class对象
            System.out.println("类型:" + c.getName()) ;    // 取得数组类型名称
            System.out.println("长度:" + Array.getLength(temp)) ;
            System.out.println("第一个内容:" + Array.get(temp,0)) ;
            Array.set(temp,0,6) ;
            System.out.println("第一个内容:" + Array.get(temp,0)) ;
    
        }
    };

    这里要注意一下这里的Array这个类java.lang.reflect.Array

    以上程序中通过Array类取得了数组的相关信息,并通过Array类中的set()方法修改了数组中的元素内容.

    在应用中还可以通过Array类根据已有的数组类型来开辟新的数组对象

    例:

    import java.lang.reflect.Array ;
    public class ChangeArrayDemo{
        public static void main(String args[]) throws Exception{
            int temp[] = {1,2,3} ;// 声明一整型数组
            int newTemp[] = (int []) arrayInc(temp,5) ;    // 重新开辟空间5
            print(newTemp) ;
            System.out.println("
    -------------------------") ;
            String t[] = {"lxh","mldn","mldnjava"} ;
            String nt[] = (String [])arrayInc(t,8) ;
            print(nt) ;
        }
        public static Object arrayInc(Object obj,int len){
            Class<?> c = obj.getClass() ;
            Class<?> arr = c.getComponentType() ;    // 得到数组的
            Object newO = Array.newInstance(arr,len) ;    // 开辟新的大小
            int co = Array.getLength(obj) ;
            System.arraycopy(obj,0,newO,0,co) ;    // 拷贝内容
            return newO ;
        }
        public static void print(Object obj){    // 数组输出
            Class<?> c = obj.getClass() ;
            if(!c.isArray()){    // 判断是否是数组
                return;
            }
            Class<?> arr = c.getComponentType() ;
            System.out.println(arr.getName()+"数组的长度是:" + Array.getLength(obj)) ;     // 输出数组信息
            for(int i=0;i<Array.getLength(obj);i++){
                System.out.print(Array.get(obj,i) + "、") ;    // 通过Array输出
            }
        }
    };
  • 相关阅读:
    7.2集训模拟赛(莫名其妙的比赛......)
    CF1042B Vitamins
    P1629 邮递员送信
    P1726 上白泽慧音
    P2341 [USACO03FALL][HAOI2006]受欢迎的牛 G
    最短路
    7.1集训模拟赛5(......)
    求最大公约数和最小共倍数的方法(除穷举)
    6.29集训模拟赛3(暴力骗分的一天,嘿嘿)
    爬虫认证ES用户,并访问api
  • 原文地址:https://www.cnblogs.com/wangyang108/p/5668519.html
Copyright © 2011-2022 走看看