Java Reflect 反射机制 学习笔记 [万能toString方法]
利用Java Reflect机制编写万能toString()方法:
package com.accp.test.filed;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
public class ObjectAnalyzer {
private List<Object> visited = new ArrayList<Object>();
public String toString(Object obj) {
if (obj == null)
return null; // 如果obj为空..返回null
if (visited.contains(obj))
return "..."; // 如果visited中已经包含obj,返回...
visited.add(obj);
Class c1 = obj.getClass(); // 得到运行时对象
if (c1 == String.class)
return (String) obj; // 如果c1是String类型,直接转换
if (c1.isArray()) { // 如果是数组类型
String r = c1.getComponentType() + "[]{"; // 得到该数组组件类型的Class
for (int i = 0; i < Array.getLength(obj); i++) {
if (i > 0)
r += ",";
Object var = Array.get(obj, i); // 取得obj[i]元素的值
if (c1.getComponentType().isPrimitive()) // 如果为基本类型
r += var;
else
r += toString(var); // 递归调用
}
return r + "}";
}
String r = c1.getName(); // 得到obj名称
// 检查本类域和所有超类域
do {
r += "[";
Field[] fields = c1.getDeclaredFields(); // 得到本类和超类所有域
AccessibleObject.setAccessible(fields, true); // 将所有域设置为可访问的.
for (Field field : fields) {
if (!Modifier.isStatic(field.getModifiers())) {
if (!r.endsWith("["))
r += ",";
r += field.getName() + "=";
try {
Class type = field.getType(); // 得到字段类型
Object var =
相关文档:
1.基本概念的理解
绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:\xyz\test.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。
相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Ser ......
1.FCKeditor 介绍
FCKeditor 这个开源的HTML 文本编辑器可以让web 程序拥有如MS Word 这样强大的编辑功能,.FCKeditor 支持当前流行的浏览器。
2.准备工作:
环境:winddows XP、tomcat6.0、JDK1.6
下载:
1):FCKeditor_2.6.4.zip
地址:http://nchc.dl.sourceforge.net/sourc...itor_2.6.4.zi ......
package com.whlongyi.sys.blob.bean;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
im ......
一、背景
1、当我们第一次接触某段代码,但又被要求在极短的时间内有效地分析这段代码,我们需要什么样的注释信息?
2、怎么样避免我们的注释冗长而且凌乱不堪呢?
3、在多人协同开发、维护的今天,我们需要怎么样的注释来保证高质、高交的进行开发和维护工作呢?
二、意义
程序中的注释是程序设计者与程序阅读者 ......
1 如果一块内存区域能够重复利用,最好不要申请新的。这个内存区域有可能是系统的一个类,自己的一个内部有数组元素,或者能够放大量数据的结构。
2 最好不要在循环里面申请内存,循环越大,越坏事。换句话说,申请内存频率别太高。好比一个人每顿吃两碗饭正好,身体的消化系统可以承受,如果让他一顿把十顿的都吃掉,不胀 ......