`
snake_hand
  • 浏览: 574921 次
社区版块
存档分类
最新评论

java反射机制初体验3

 
阅读更多

Array

1、每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。

 

如果此类对象表示一个数组类,则名字的内部形式为:表示该数组嵌套深度的一个或多个 '[' 字符加元素类型名。元素类型名的编码如下:

Element Type

 

Encoding

boolean

 

Z

byte

 

B

char

 

C

class or interface

 

Lclassname;

double

 

D

float

 

F

int

 

I

long

 

J

short

 

S

     

 

2、  代表数组的Class实例对象的getSuperClass()方法返回的父类为Object类对应的Class。

3、  基本类型的一维数组可以被当作Object类型使用,不能当作Object[]类型使用;非基本类型的一维数组既可以当作Object类型使用,也可当作Object[]类型使用。

4、  Array工具类用于完成对数的反射操作。

示例代码:

View Code
 1 package reflect;
 2 
 3 import java.lang.reflect.Array;
 4 import java.lang.reflect.Constructor;
 5 import java.lang.reflect.Field;
 6 import java.lang.reflect.Method;
 7 import java.util.Iterator;
 8 
 9 public class ReflectTest {
10 
11     private static final Object Integer = null;
12 
13     /**
14      * @author alan
15      * @param args
16      * @throws Exception
17      */
18     public static void main(String[] args) throws Exception {
19         /*
20          *数组的反射
21          *每个数组属于被映射为 Class 对象的一个类,
22          *所有具有相同元素类型和维数的数组都共享该 Class 对象。
23          */
24         int [] intArray1=new int[]{1,2,3};
25         int [] intArray2=new int[4];
26         int [] []intArray3=new int[3][4];
27         String[] stringArray=new String[]{"a","b","c"};
28         System.out.println(intArray1.getClass()==intArray2.getClass());    //输出为true
29         //System.out.println(intArray1.getClass()==intArray3.getClass());    //编译无法通过
30         //System.out.println(intArray1.getClass()==stringArray.getClass());//编译无法通过
31         
32         System.out.println("intArray1 is "+intArray1.getClass().getName() );
33         /*
34          * 类 Object 是类层次结构的根类。
35          * 每个类都使用 Object 作为超类。
36          * 所有对象(包括数组)都实现这个类的方法。 
37          */
38         System.out.println("intArray1's parent is "+intArray1.getClass().getSuperclass().getName());
39         System.out.println("intArray3's parent is "+intArray3.getClass().getSuperclass().getName());
40         Object object1=intArray1;                //基本类型的一维数组可以被当作Object类型使用
41         Object object2=stringArray;            //非基本类型的一维数组可以当作Object类型使用
42         Object[] object3=intArray3;                //数组可以为Object类型使用
43         Object[] object4=stringArray;             //非基本类型的一维数组可当作Object[]类型使用
44         //Object[] object5=intArray1;             //编译出错.基本类型的一维数组不能当作Object[]类型使用,基本类型不是Object。
45         //System.out.println("int's parent is "+int.class.getSuperclass().getName());//运行出错:Exception in thread "main" java.lang.NullPointerException
46         
47         /*
48          *Array工具类用于完成对数的发射操作。
49          *Array 类提供了动态创建和访问 Java 数组的方法。 
50          *Array 允许在执行 get 或 set 操作期间进行扩展转换,
51          *但如果发生收缩转换,则抛出 IllegalArgumentException。
52          */
53         
54         Class classType=Class.forName("java.lang.String");
55         Object array=Array.newInstance(classType,10);
56         Array.set(array, 5, "helloWorld!");
57         String string=(String) Array.get(array, 5);
58         System.out.println("The 5th is "+string);
59         
60         //多维数组反射,使用Array类静态方法创建三维、二维、一维数组,
61         //并给数组的每个赋值并取出该值。
62         int[] dims=new int[]{5,15,20};
63         Object dimsarray3=Array.newInstance(int.class,dims);//此时为三维数组
64         Object dimsarray2=Array.get(dimsarray3, 3);    //此时为二维数组
65         Class cls=dimsarray2.getClass().getComponentType(); //获得二维数组的Class类型
66         dimsarray2=Array.get(dimsarray2, 5);    //此时为一维数组
67         Array.set(dimsarray2, 10, 37);
68         System.out.println("反射方法获取:"+Array.get(dimsarray2, 10));
69         int[][][] arrayCast=(int[][][]) dimsarray3;
70         System.out.println("所设的值:"+arrayCast[3][5][10]);         
71     }
72 }

 

分享到:
评论

相关推荐

    java反射机制.zip

    java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...

    Java反射机制 Java反射机制

    Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制

    JAVA 反射机制应用

    JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用

    java反射机制原理和反射机制总结

    java反射机制原理和反射机制总结!!! java反射机制原理和反射机制总结!!!

    反射实例-JAVA反射机制.doc

    反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...

    java反射机制源码

    java反射机制源码java反射机制源码java反射机制源码

    Java反射机制课件ppt

    Java反射机制Java反射机制Java反射机制Java反射机制

    JAVA反射机制应用

    描述JAVA反射机制应用、举例。描述反射机制的具体实现及方法实现。

    Java 反射机制 代码的实例

    Java 反射机制 代码的实例 请认真阅读 运行此代码 只要读懂了 反射机制也就明白了

    java反射机制和动态代理的原理

    java反射机制和动态代理的原理,熟悉反射机制和动态代理

    java 反射机制

    java 反射机制深入理解,java 反射机制深入理解,java 反射机制深入理解,

    Java反射机制的实现_Reflection

    Java反射机制的实现_Reflection,适合学习了解反射机制。

    Java反射机制经典案例

    Java 反射机制、Java 的类反射机制、Java 反射机制的学习、Java 反射Reflection--运行时生成实例 java反射机制的手册文档

    Java反射机制总结

    这是一本关于Java反射机制论文集合的书。其中包含基本的理论及各种实例。 所有文章均从网络途径获得,本人只作收集整理的工作,个别地方有改动。每篇文章的标题遵循原作者的表述,本人不再作任何更改。 关键字有:...

    候捷谈Java反射机制

    候捷谈Java反射机制 有助深入理解Java新特性

    Java中的反射机制

    Java中的反射机制Java中的反射机制Java中的反射机制

    Java反射机制总结(实例分析)

    Java反射机制总结(实例分析) Java反射机制学习笔记

    一个例子让你了解Java反射机制

    一个例子8个demo让你了解Java反射机制

    java反射机制应用

    java反射机制应用,文档中列举了使用java反射机制的各个应用场景,加以代码实例,使用学习非常方便。

    java反射机制.md

    深入了解java反射机制的原理,通过反射机制可以破坏单例模式,如何防止通过反射机制拿到单例模式的构造器呢?用枚举类可破

Global site tag (gtag.js) - Google Analytics