java.lang.reflect.Array

添加评论 12 views 2010年8月3日

java.lang.Array 类提供了动态创建和访问数组元素的各种静态方法。Array 允许在执行 get 或 set 操作期间进行扩展转换,但如果发生收缩转换,则抛出 IllegalArgumentException。
Array 为final的,没有实例,只有静态方法。
Array是java反射机制reflection的一种用法, 注意创建数组时的类型是动态的,在编译时并不知道其类型。
注意,其类中的方法都为native的,即一些和操作系统打交道的方法,真正的实现方法和原理据说由C/C++在java虚拟机中实现了。
使用Array 的一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        @Test
	public void testArray() throws ClassNotFoundException {
		Class clazz = Class.forName("java.lang.String");
 
		//创建一个长度为10的字符串数组,在Java中数组也可作Object对象
		Object array = Array.newInstance(clazz, 10);
 
		// 把字符串数组对象的索引位置为5的元素设置为"hello"
		Array.set(array, 5, "javachen.com");
 
		// 获得字符串数组对象的索引位置为5的元素的值
		String str = (String) Array.get(array, 5);
		System.out.println(str);// javachen.com
	}
 
	// 一个体现数组动态生成的方法
	public static Object reflection(Object o, int i) {
		return Array.newInstance(o.getClass().getComponentType(), i);
	}
  1. 2010年8月4日 at 09:01 | #1

    在Java中数组也可以作为Object对象
    这是必须的啊,object是所有类或者对象的父类啊

  2. 2010年8月17日 at 17:23 | #2

    反射耗性能啊.

  3. 2010年8月17日 at 22:21 | #3

    性能问题的程度取决于程序中是如何使用反射的。如果它作为程序运行中相对很少涉及的部分,缓慢的性能将不会是一个问题。即使测试中最坏情况下的计时图显示的反射操作只耗用几微秒。仅反射在性能关键的应用的核心逻辑中使用时性能问题才变得至关重要。

  1. 还没有 trackbacks
订阅评论