- 浏览: 169602 次
- 性别:
- 来自: 北京
最新评论
-
guoshuang60:
关于线程池,能不能给个使用的例子啊>我们有一个线程池,但 ...
Java线程池,正式上线运行的源码,分享欢迎使用并提意见 -
jiajunde:
哥们们,用了评价一下社。。。有啥问题没
Java线程池,正式上线运行的源码,分享欢迎使用并提意见 -
caoxiaoj2ee:
好像不支持FF
图片另存为
import java.util.*;
import java.lang.reflect.*;
public class TypeUtil {
/**
* Returns a string holding the contents of the passed object,
*
* @param scope
* String
* @param parentObject
* Object
* @param visitedObjs
* List
* @return String
*/
private static String complexTypeToString(String scope,
Object parentObject, List visitedObjs) {
StringBuffer buffer = new StringBuffer("");
try {
//
// Ok, now we need to reflect into the object and add its child
// nodes...
//
Class cl = parentObject.getClass();
while (cl != null) {
processFields(cl.getDeclaredFields(), scope, parentObject,
buffer, visitedObjs);
cl = cl.getSuperclass();
}
} catch (IllegalAccessException iae) {
buffer.append(iae.toString());
}
return (buffer.toString());
}
/**
* Method processFields
*
* @param fields
* Field[]
* @param scope
* String
* @param parentObject
* Object
* @param buffer
* StringBuffer
* @param visitedObjs
* List
* @throws IllegalAccessException
*/
private static void processFields(Field[] fields, String scope,
Object parentObject, StringBuffer buffer, List visitedObjs)
throws IllegalAccessException {
for (int i = 0; i < fields.length; i++) {
//
// Disregard certain fields for IDL structures
//
if (fields[i].getName().equals("__discriminator")
|| fields[i].getName().equals("__uninitialized")) {
continue;
}
//
// This allows us to see non-public fields. We might need to deal
// with some
// SecurityManager issues here once it is outside of VAJ...
//
fields[i].setAccessible(true);
if (Modifier.isStatic(fields[i].getModifiers())) {
//
// Ignore all static members. The classes that this dehydrator
// is
// meant to handle are simple data objects, so static members
// have no
// bearing....
//
} else {
buffer.append(typeToString(scope + "." + fields[i].getName(),
fields[i].get(parentObject), visitedObjs));
}
}
}
/**
* Method isCollectionType
*
* @param obj
* Object
* @return boolean
*/
public static boolean isCollectionType(Object obj) {
return (obj.getClass().isArray() || (obj instanceof Collection)
|| (obj instanceof Hashtable) || (obj instanceof HashMap)
|| (obj instanceof HashSet) || (obj instanceof List) || (obj instanceof AbstractMap));
}
/**
* Method isComplexType
*
* @param obj
* Object
* @return boolean
*/
public static boolean isComplexType(Object obj) {
if (obj instanceof Boolean || obj instanceof Short
|| obj instanceof Byte || obj instanceof Integer
|| obj instanceof Long || obj instanceof Float
|| obj instanceof Character || obj instanceof Double
|| obj instanceof String) {
return false;
} else {
Class objectClass = obj.getClass();
if (objectClass == boolean.class || objectClass == Boolean.class
|| objectClass == short.class || objectClass == Short.class
|| objectClass == byte.class || objectClass == Byte.class
|| objectClass == int.class || objectClass == Integer.class
|| objectClass == long.class || objectClass == Long.class
|| objectClass == float.class || objectClass == Float.class
|| objectClass == char.class
|| objectClass == Character.class
|| objectClass == double.class
|| objectClass == Double.class
|| objectClass == String.class) {
return false;
}
else {
return true;
}
}
}
/**
* Returns a string holding the contents of the passed object,
*
* @param scope
* String
* @param obj
* Object
* @param visitedObjs
* List
* @return String
*/
private static String collectionTypeToString(String scope, Object obj,
List visitedObjs) {
StringBuffer buffer = new StringBuffer("");
if (obj.getClass().isArray()) {
if (Array.getLength(obj) > 0) {
for (int j = 0; j < Array.getLength(obj); j++) {
Object x = Array.get(obj, j);
buffer.append(typeToString(scope + "[" + j + "]", x,
visitedObjs));
}
} else {
buffer.append(scope + "[]: empty\n");
}
} else {
boolean isCollection = (obj instanceof Collection);
boolean isHashTable = (obj instanceof Hashtable);
boolean isHashMap = (obj instanceof HashMap);
boolean isHashSet = (obj instanceof HashSet);
boolean isAbstractMap = (obj instanceof AbstractMap);
boolean isMap = isAbstractMap || isHashMap || isHashTable;
if (isMap) {
Set keySet = ((Map) obj).keySet();
Iterator iterator = keySet.iterator();
int size = keySet.size();
if (size > 0) {
for (int j = 0; iterator.hasNext(); j++) {
Object key = iterator.next();
Object x = ((Map) obj).get(key);
buffer.append(typeToString(scope + "[\"" + key + "\"]",
x, visitedObjs));
}
} else {
buffer.append(scope + "[]: empty\n");
}
} else if (/* isHashTable || */
isCollection || isHashSet /* || isHashMap */
) {
Iterator iterator = null;
int size = 0;
if (obj != null) {
if (isCollection) {
iterator = ((Collection) obj).iterator();
size = ((Collection) obj).size();
} else if (isHashTable) {
iterator = ((Hashtable) obj).values().iterator();
size = ((Hashtable) obj).size();
} else if (isHashSet) {
iterator = ((HashSet) obj).iterator();
size = ((HashSet) obj).size();
} else if (isHashMap) {
iterator = ((HashMap) obj).values().iterator();
size = ((HashMap) obj).size();
}
if (size > 0) {
for (int j = 0; iterator.hasNext(); j++) {
Object x = iterator.next();
buffer.append(typeToString(scope + "[" + j + "]",
x, visitedObjs));
}
} else {
buffer.append(scope + "[]: empty\n");
}
} else {
//
// theObject is null
buffer.append(scope + "[]: null\n");
}
}
}
return (buffer.toString());
}
/**
* Method typeToString
*
* @param scope
* String
* @param obj
* Object
* @param visitedObjs
* List
* @return String
*/
private static String typeToString(String scope, Object obj,
List visitedObjs) {
if (obj == null) {
return (scope + ": null\n");
} else if (isCollectionType(obj)) {
return collectionTypeToString(scope, obj, visitedObjs);
} else if (isComplexType(obj)) {
if (!visitedObjs.contains(obj)) {
visitedObjs.add(obj);
return complexTypeToString(scope, obj, visitedObjs);
} else {
return (scope + ": <already visited>\n");
}
} else {
return (scope + ": " + obj.toString() + "\n");
}
}
/**
* The typeToString() method is used to dump the contents of a passed object
* of any type (or collection) to a String. This can be very useful for
* debugging code that manipulates complex structures.
*
* @param scope
* @param obj
*
* @return String
*
*/
public static String typeToString(String scope, Object obj) {
if (obj == null) {
return (scope + ": null\n");
} else if (isCollectionType(obj)) {
return collectionTypeToString(scope, obj, new ArrayList());
} else if (isComplexType(obj)) {
return complexTypeToString(scope, obj, new ArrayList());
} else {
return (scope + ": " + obj.toString() + "\n");
}
}
public static void main(String [] args){
List list = new ArrayList();
list.add("adf");
list.add("adfccc");
list.add("adfzxzc");
System.out.println(TypeUtil.typeToString("list",list));
}
}
发表评论
-
内存清理
2013-04-23 10:40 679操作系统32G内存,内存清理 echo 1 > ... -
在eclipse里加标签
2011-07-12 10:09 1184在eclipse里发现某处代码需要修改又不是马上改,一般需要加 ... -
在一台机器上挂多个tomcat
2011-06-24 15:25 1163在一台机器上挂多个TOMCAT,不能在profile里设置成全 ... -
Preference乱码
2011-06-22 15:48 12401. 菜单WindowèPreference..; ... -
JVM内存(转)
2011-06-19 22:29 1138JVM的内部结构 如图所 ... -
QPS、PV和需要部署机器数量计算公式(转)
2011-06-18 22:58 12470术语说明: QPS = req/sec ... -
设置TOMCAT内存大小
2011-06-14 09:42 1111Tomcat默认可以使用的内存很小,在较大型的应用项目中,这点 ... -
Java线程池,正式上线运行的源码,分享欢迎使用并提意见
2011-05-27 15:47 2164各位: 大家好,附件中三个文件分别是已经打成包的线程 ... -
peth0: received packet with own address as source address
2011-05-25 09:45 2067peth0: received packet with own ... -
Flex里组件居中
2011-04-26 21:21 932<!-- horizontalCenter= ... -
ibator生成java bean iBatls
2011-03-14 16:37 870以前用过,不记就忘了,看这个 详见:http://k ... -
CentOS5.5下挂载ntfs文件系统
2010-12-08 10:39 756CentOS5.5下挂载ntfs文件系统 ... -
解决eclipse自动关闭
2010-09-09 15:53 752用java EE的IDE,把智能ABC干掉,就不会在输入法切换 ... -
myeclipse 没提示
2010-08-23 16:03 876建了个JAVA工程,然后发现输入代码后,在输入。后面不会弹出来 ... -
修改MyEclipse字体大小
2010-08-14 14:59 1449Window --> Preferences --> ... -
oracel建表空间,建用户,建权限
2010-06-12 11:31 1094用system用户登陆 -------创建表空间 需要修改 ... -
PPT不能播放
2010-06-08 08:40 1822装好机器以后PPT一直没有怎么用过,这几天发现我的PPT不能播 ... -
java生成静态页
2010-05-04 15:49 919java生成静态页 -
查看Linux版本号
2010-01-25 12:05 749cat /etc/issue 可以查到版本号能够出来SP2 -
VMTool
2010-01-22 15:10 740http://www.xuniji.com/forum/vie ...
相关推荐
例如,在 XML 解析中,我们可能需要将 XML 文件中的数据注入到内存中的 Java 对象中,然后打印对象的所有属性值,以便 debug 和测试。 例如,假设我们有一个 `PredictData` 对象,它有多个属性,例如 `cityCode`、`...
这将会输出`obj`的所有信息,包括其内部的属性、嵌套的对象和数组内容,让开发者能够清晰地看到对象的全貌。 总的来说,“打印自定义复杂对象工具类”是Java开发中的一种实用辅助工具,通过提供详尽的对象表示,...
标题中的“脚本alert打印对象结构”指的是在JavaScript编程中,使用`alert`函数来显示一个对象的结构或内容。通常,当我们想要查看一个对象的所有属性和方法时,`console.log()`是常用的工具,但`alert()`也能提供...
4. 将iframe添加到页面的body中,并获取iframe的contentWindow.document对象,为打印做准备。 5. 将打印区域的内容写入iframe的文档中,可以通过添加link元素引入打印专用的CSS样式。 6. 将iframe聚焦,并调用`print...
在易语言中,我们可能需要创建一个打印对象,这个对象可以理解为与打印机通信的中介,通过它来设置打印参数和发送打印命令。 3. **设置打印参数**: 设置打印参数包括纸张大小、方向(横向或纵向)、边距、页眉和...
这样做的目的是为了确保表格在打印过程中能够清晰地呈现出来,避免因为色彩问题导致的部分内容丢失。 **步骤二:优化OLE对象的打印设置** 1. **进入CAD设置**:在CAD软件主界面中,点击“工具”菜单下的“选项”...
为了将窗口内容打印出来,我们需要创建一个新的DrawingVisual,它是一个轻量级的绘图对象,可以用来绘制任何WPF图形。然后,我们将在DrawingContext中使用VisualBrush绘制窗口内容。 ```csharp DrawingVisual ...
本文将深入探讨如何利用打印机对象进行行打印开发,以及与之相关的知识点。 首先,我们要了解VB中的`Printer`对象。这是一个内置的对象,可以直接在代码中引用,无需先创建实例。`Printer`对象提供了各种属性、方法...
在Delphi编程环境中,PrintText函数常用于打印文本文件的内容。这个功能对于开发需要打印报告、日志或者用户文档的应用程序至关重要。本文将深入探讨如何使用Delphi的PrintText功能来实现这一目标,并涵盖相关的核心...
总结来说,"jsPDF打印超长内容"这个话题涉及到利用jsPDF和html2canvas结合,通过修复或优化html2canvas来支持长内容的滚动打印,最终实现将整个网页内容转换为PDF文档。这需要对JavaScript、HTML、CSS以及相关库有...
在JavaScript编程中,"dump"功能提供了一种类似于"alert"的增强版打印服务,尤其在处理数组和对象时更为方便。"alert"函数通常用于简单地显示字符串信息,但当试图显示复杂的数据结构,如数组或对象时,它的能力就...
### VB.NET 打印 RichTextBox 中的内容 在 VB.NET 中,打印 `RichTextBox` 控件中的文本是一项常见的需求。本文将详细介绍如何实现这一功能,并解释所给代码片段中涉及的关键概念和技术要点。 #### 1. 引入必要的...
8. 文件操作:打印程序可能需要读取文件进行打印,如`Document`对象可能从`.txt`, `.pdf`, `.docx`等文件中加载内容。Java的`java.io`包提供了丰富的文件操作类和方法。 通过以上这些知识点的运用,我们可以构建出...
WebPrint打印插件对象是一种专为网页打印设计的技术解决方案,它允许用户在浏览器环境中实现定制化的打印功能。这种插件通常作为一个对象嵌入到HTML页面中,为网页开发者提供了更高级别的控制,超越了标准浏览器打印...
很多时候,我们在BarTender条码打印软件里做标签时,涉及数据特别大,都保存在EXCLE表格里,那要怎么做,才可以使BarTender批量打印EXCEL数据呢?下面,小编就教教大家一种简单的批量打印标签的方法吧! 1. 在...
使用printer对象打印表格可以实现复杂的打印需求,并提供了许多有用的属性和方法来自定义打印格式和内容。 知识点: 1. 使用printer对象打印表格可以实现复杂的打印需求。 2. printer对象提供了许多属性和方法,如...
4. **绘制ListView内容**:由于ListView控件本身不支持直接打印,我们需要手动使用Graphics对象(来自Printer对象)来绘制列表视图的内容。例如,我们可以使用Graphics.DrawString方法绘制每一项和子项的文本。 5. ...
`PrintPage`事件是关键,当触发此事件时,你需要在这个事件处理程序中绘制要打印的内容。比如打印文本: ```csharp printDoc.PrintPage += (sender, e) => { e.Graphics.DrawString("Hello, World!", new Font...
在本文中,我们将深入探讨如何在对话框中实现打印预览和打印窗口内容的功能,以一个基于Visual Studio 2005(MFC库)的实际例子进行阐述。首先,让我们理解对话框、打印、打印预览和打印窗口这些概念。 **对话框...
在本文中,将介绍在使用console.log()打印对象时可能出现的属性缺失问题以及解决这些问题的方法。 首先,需要明确在JavaScript中,当你打印一个对象到控制台时,你得到的是对象当前状态的一个快照。如果你在打印后...