Java Reflect 反射 学习笔记3 操作
Java Reflect编写 通用数组扩展类
package com.accp.array;
import java.lang.reflect.Array;
public class GrowArrayTest {
public static void main(String[] args) {
Integer[] array = {1,2,3,4}; //通用扩展
arrayPrint(array);
array = (Integer[])goodArrayGrow(array);
arrayPrint(array);
String[] str = {"xw","xz"};
arrayPrint(str);
str = (String[])badArrayGrow(str); //会报ClassCastException异常,无法将Object转换成String类型
arrayPrint(str);
int[] a = null;
goodArrayGrow(a);
arrayPrint(a);
}
public static Object goodArrayGrow(Object o) {
Class clazz = o.getClass(); //得到类型信息
if (!clazz.isArray())
return null;
Class type = clazz.getComponentType(); //得到o的类型
int newLength = Array.getLength(o) * 11 / 10 + 10;
Object newArray = Array.newInstance(type, newLength); //创建一个新的Array, type = clazz.getComponentype()
System.arraycopy(o, 0, newArray, 0, Array.getLength(o));
return newArray;
}
public static Object[] badArrayGrow(Object[] o){
int newLength = o.length * 11 /10 +10;
Object[] newArray = new Object[o.length];
System.arraycopy(o, 0, newArray, 0, o.length);
return newArray;
}
public static void arrayPrint(Object a) { // 遍历输出数组值
Class clazz = a.getClass(); // 得到类型信息
if (!clazz.isArray())
return;
Class type = clazz.getComponentType(); // 得到类型
Integer length = Array.getLength(a); // 得到长度
System.out.print(type.getName() + "[" + length + "]={"); // 格式化输出
for (int i = 0; i < Array.getLength(a); i++)
System.out.print(Array.get(a, i) + " ");
System.out.println("}");
}
}
 
相关文档:
很多朋友在Java开发中,使用Oracle数据库的时候,经常会碰到有ORA-01000: maximum open cursors exceeded.的错误。
实际上,这个错误的原因,主要还是代码问题引起的。
ora-01000: maximum open cursors exceeded.
表示已经达到一个进程打开的最大游标数。
这样的错误很容易出现在Java代码中的主要原因是:Java代码在执 ......
JAVA反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属 ......
转自:IBM技术社区2009 Java 专区最受欢迎内容
最受欢迎的热门主题
Web 开发
2009
年,Web 2.0 热潮促使 Web 开发继续成为当前最热门的主题。其中,基于动态语言 Goovy 的新兴 Web 开发框架 Grails
成为了备受瞩目的新星。除此之外,许多传统的基于 Java 语言的 Web 开发框架,如 Struts、JSF、GWT
等,也都融入 ......
Java 中内部动态类(没有static)关键字和内部静态类的就在于内部动态类不能定义静态变量或是静态方法,如果要在内部类中使用静态成员,必须将类声明为静态类. 内部类中的静态方法可以访问外部类的静态方法和本类中的静态方法或成员, 非静态方法可以访问其他所有的方法或成员 ......