• 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输出
            }
        }
    };
  • 相关阅读:
    python网络编程,requests模块
    python操作excel
    python加密模块hashlib
    python操作redis
    python操作mysql
    python常用模块3(os和sys模块)
    python打开网站
    python常用模块2
    python模块简介
    mac下开发——环境心得(杂项,持续性更新)
  • 原文地址:https://www.cnblogs.com/wangyang108/p/5668519.html
Copyright © 2020-2023  润新知