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("}");
}
}
 
相关文档:
1 如果一块内存区域能够重复利用,最好不要申请新的。这个内存区域有可能是系统的一个类,自己的一个内部有数组元素,或者能够放大量数据的结构。
2 最好不要在循环里面申请内存,循环越大,越坏事。换句话说,申请内存频率别太高。好比一个人每顿吃两碗饭正好,身体的消化系统可以承受,如果让他一顿把十顿的都吃掉,不胀 ......
垃圾收集几乎是每个开发人员都喜爱的一个 Java™ 平台特性,它简化了开发,消除了所有种类的潜在代码错误。可尽管垃圾收集一般来说可以让您无需进行资源管理,有时候您还是必须自己进行一些内务处理。
显式地释放资源
Java 程序中使用的绝大多数资源都是对象,垃圾收集在清理对象方面做得很好。因此,您可以使用任 ......
关于java的链表思想
先可看以下例子
先建立一个实例(Student.java)
package com.yz.mylink;
public class Student {
private Integer id;
private String name;
private Integer age;
private String classes;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = i ......
六种异常处理的陋习
你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?
Java代码
OutputStreamWriter out = ...
java.sql.Connection conn =& ......