易截截图软件、单文件、免安装、纯绿色、仅160KB

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错误解析

很多朋友在Java开发中,使用Oracle数据库的时候,经常会碰到有ORA-01000: maximum open cursors exceeded.的错误。
实际上,这个错误的原因,主要还是代码问题引起的。
ora-01000: maximum open cursors exceeded.
表示已经达到一个进程打开的最大游标数。
这样的错误很容易出现在Java代码中的主要原因是:Java代码在执 ......

Java反射机制:Constructor!

import org.junit.Test;
public class ConstructorTest {
@Test @SuppressWarnings("unchecked")
public void testConstructor(){
try {
Class clazz = Class.forName("cn.vicky.utils.User");
Method method = clazz.getDeclaredMethod("getName");
Constructor<? extends Live> constructor = ......

java static GC 回收问题

1)静态变量本身不会被回收
2)静态变量所引用的对象是可以回收的。
第一点大家应该没有疑问,下面我证明第2点:
看下面的例子及注释。自己可以运行试一下, 注意加上-verbose:gc参数
java -verbose:gc TestStaticGc
// TestStaticGc.java
public class TestStaticGc {
 & ......

Java 复习笔记_第4天

数据库连接
              流是指一连串流动的字符,是以先进先出的方式处理的。
              构造一个文件输入流对象:InputStream o = new FileInputStream(“a.txt&rdquo ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号