for java beginner12数组的反射的应用
java 反射 数组的反射数组也是一种类型,当然可以反射
如果数组的 类型 维度 一样,那么他们反射出来的 字节码是一样的
-----------
package com.ncs;import java.lang.reflect.Array;import java.util.Arrays;public class ArrayReflct {public static void main(String[] args) {//数组也是一种类型,当然可以反射 //如果数组的 类型 维度 一样,那么他们反射出来的 字节码是一样的int[] a1 = new int;int[] a2 = new int;int[][] a3 = new int;String[] a4 = new String;System.out.println(a1.getClass() == a2.getClass()); //trueSystem.out.println(a1.getClass() == a4.getClass()); //falseSystem.out.println(a1.getClass() == a3.getClass()); //falseSystem.out.println(a1.getClass().getName()); // object3 = a1; //★只有这个不可以,基本类型不是OBJECTObject[] objects4 = a3;Object[] objects5 = a4;//-------------下面再说一个 幽禁的东西//int[] myIntArr = new int{1,2,3}; //不要弄这样的错误,既然给值了,就不要说 长度了int[] myIntArr = new int[]{1,2,3}; //不要弄这样的错误,既然给值了,就不要说 长度了String[] myStrArr = new String[]{"a","b","c"};//我现在要打印,懒的用 loop 怎么办System.out.println(myIntArr); //System.out.println(Arrays.asList(myStrArr));////Object 可以了, 但是 基本类型给你弄了个东西,把它当成一个元素了//怎么会这样呢??//1.4 里 是这样的 public static List asList(Object[] a)//所以它拿到 myStrArr 就 匹配这个方法了//而 myIntArr 不是 Object[] ,看看上面★号的地方//1.4说,不是我的事情了,你1.5有本事就自己拿去处理吧//1.5 是这样的 public static <T> List<T> asList(T... a)//这个说把你一堆东西弄成一个list//现在进来 myIntArr 它只把你当一个object//处理的办法不知道了, 还是用 loop 吧[对于 基本类型]//想出来了,用 数组的反射技术//Object obj = null;//printObject(obj);System.out.println("=======================");//testint[] myIntArr2 = new int[]{1,2,3}; String[] myStrArr2 = new String[]{"a","b","c"};String str = "hubin";printObject(myIntArr2);printObject(myStrArr2);printObject(str);//自己写的比 JDK 里的好多了★★//----------怎么得到数组的元素类型呢??String[] testStrArr = new String[]{"a","b","c"};System.out.println(testStrArr.getClass().toString()); //class [Ljava.lang.String;原来是String类型}private static void printObject(Object obj) {//这里就是给你打印了//参数是 object 什么都可以进来,所以要判断一下//是 数组 ,就给你一个一个 弄出来 ,不是数组,就直接打印好了//★这里SUN给了个类 用来操作 数组 ArrayClass clazz = obj.getClass();//不可能会有obj.length ,你怎么知道obj就是数组呢??????????if(clazz.isArray()){//这就是了//是了我就要一个一个把你弄出来//需要那个类了int length = Array.getLength(obj);for(int i=0;i<length;i++) {System.out.println(Array.get(obj, i));}}else {//这里不是数组了System.out.println(obj);}}}
-------------------------
页:
[1]