`
liang2431
  • 浏览: 7557 次
社区版块
存档分类
最新评论

重写ToString()

    博客分类:
  • j2se
 
阅读更多

在java中,重要的就是对象吧,通常我们需要测试时,都需要对象.get()获得对象的属相值,这样操作的效率很低下啊。。。

现在奉上一个工具类,就可以解决这种问题。这里主要还是重写toString().

import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;

public class EntityUtil {

	/**
	 * 返回代表当前对象的字符串对象,忽略ignores所指定的的属性
	 * @return包含所有的成员变量的名称和他们的值,以及从父类中继承的属性。不包含Objecy中的属性。
	 */
	public static String toString(Object entity,String[] ignores){
		if(entity == null){
			return null;
		}
		StringBuffer buffer = new StringBuffer();
		Class c = entity.getClass();
		buffer.append(c.getName());
		buffer.append("[");
		
		Class parent = c.getSuperclass();
		
		while(parent != null && !(parent == Object.class)){
			Field[] fields = parent.getDeclaredFields();
			try{
				appendFields(buffer,fields,entity,ignores);
			}catch(Exception e){
				e.printStackTrace();
			}
			parent = parent.getSuperclass();
		}
		try{
			Field[] fields = c.getDeclaredFields();
			appendFields(buffer,fields,entity,ignores);
		}catch(Exception e){
			e.printStackTrace();
		}
		buffer.append("]");
		return buffer.toString();
	}
	/**
	 * 返回代表对象的字符串对象
	 * @param entity
	 * @return 包含所有的成员变量的名称和他们的值,以及从父类中继承的属性。不包含Objecy中的属性。
	 */
	public static String toString(Object entity){
		return toString(entity,new String[0]);
	}
	
	private static void appendFields(StringBuffer buffer,Field[] fields,Object entity,
			String[] ignores) throws Exception{
		AccessibleObject.setAccessible(fields, true);
		for (int i = 0; i < fields.length; i++) {
			String name = fields[i].getName();
			if(!shouldIgnore(name,ignores)){
				if(i!=0){
					buffer.append(",");
				}
				if(!name.equals("class")){
					Object value = fields[i].get(entity);
					buffer.append(name+"="+value);
				}
			}
		}
	}

        private static boolean shouldIgnore(String field, String[] ignores) {
		boolean ignore = false;
		for (int i = 0; i < ignores.length; i++) {
			if(field.equalsIgnoreCase(ignores[i])){
				ignore = true;
				break;
			}
		}
		return false;
	}
	
}
分享到:
评论

相关推荐

    重写toString和equals方法

    Java 对象的toString和equals方法重写 在 Java 中,每个对象都继承自 Object 类,而 Object 类中定义了两个重要的方法:toString() 和 equals()。这两个方法都是非常重要的,它们分别用于对象的字符串表示和对象...

    在C#的类或结构中重写ToString方法的用法简介

    C# 中的每个类或结构都隐式...创建自定义类或结构时,应该重写 ToString 方法,以便向客户端代码提供类型信息。 当您决定通过此方法提供的信息的类型时,应考虑您的类或结构是否会被不受信任的代码使用。请务必确保您

    16.通过重写 class 的 ToString().pdf

    根据提供的文件内容,以下是关于C#中重写ToString()方法以及枚举类型的一些知识点: 1. 枚举类型(Enum)在C#中的使用: 在C#中,枚举类型是一种特殊的数据类型,用于表示一组命名的整型常量。枚举类型提高了代码的...

    动力节点_Java基础视频教程52_重写toString方法

    动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础语法、Java的面向对象。每一个知识点都讲解的非常细腻,由浅入深。适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础...

    js中toString方法3个作用.docx

    在上面的例子中,我们重写了 toString 方法,以便于返回一个自定义的字符串表示形式。 检测对象的类型 toString 方法的第二个作用是检测对象的类型。例如: ``` let arr = [] console.log(Object.prototype....

    toString完美解释

    例如,String 类重写了 Object 的 toString() 方法,以返回字符串的实际值。这样,当我们使用 System.out.println() 输出一个字符串时,实际上是调用了 String 类的 toString() 方法。 toString() 方法的优点是,...

    java tostring方法重写代码示例

    Java toString方法重写代码示例 Java 中的 toString() 方法是 Object 类中的一个方法,该方法返回对象的字符串表示形式。默认情况下,toString() 方法将返回对象的类名和哈希码,但在实际开发中,我们通常需要...

    C++重写String类

    然而,有时候根据特定项目需求或为了学习目的,我们可能会选择重写这个类。本篇将深入探讨如何在C++中自定义一个类似于`std::string`的字符串类,并覆盖其基本功能。 一、为什么要重写String类? 1. **定制功能**:...

    浅谈Java编程ToString()方法重写的意义

    在Java编程中,`toString()`方法的重写是一项重要的实践,尤其对于自定义类的调试和日志记录。`toString()`方法是Java中`Object`类的一个成员,它默认返回对象的类名以及在内存中的哈希码,这对于开发者来说往往并不...

    Java自动添加重写的toString方法详解

    然而,这样的输出对于调试和日志记录通常并不友好,所以我们常常需要重写`toString()`方法来提供更有意义的信息。 在Java中,`toString()`方法的重写通常是为了展示对象内部的状态,即它的成员变量的值。这样做可以...

    C#界面转换以及当前时间显示(正确)

    C#界面转换以及当前时间显示(正确版Login:张三,Password:0000) 适合初学者

    Java toString的性能优化方案比较

    建议所有子类重写该方法”。这里有趣的是“简明”和“详实”。我们所钟爱的IDE们常常为我们生成equals/hashcode/toString这些方法,且我们通常不再去管它们。此外,这些IDE们提供了许多方式来生成我们自己

    c#中的常用ToString()方法总结

    很多内置类型以及自定义类都重写了这个方法,以便提供更丰富的输出格式。以下是对C#中`ToString()`方法的一些常见用途和格式说明的详细总结。 1. **基本数据类型**: - 对于`int`、`double`等基本数据类型,`...

    容器的分类

    本篇文章将详细讲解容器的分类,重点探讨Java中的集合框架,包括List、Set以及重写toString方法的重要性,同时也会简单提及Collections类的使用。 首先,我们来了解容器的分类。在Java中,容器主要分为两大类:集合...

    android图书管理系统

    public String toString() { //重写toString()因为适配器在显示数据的时候,如果传入适配器的对象不是字符串的情况下,直接就使用对象.toString() // TODO Auto-generated method stub return Value; } public...

    Android 图书管理系统 后台系统.rar

     ,这里牵涉一个问题:为什么要重写toString()呢?因为适配器在显示数据的时候,如果传入适配器的对象不是字符串的情况下,直接就使用对象.toString()。  运行界面效果请参见截图所示,需要配置数据库,db.sql是...

    Lombok快速入门及使用详情

    使用 @ToString 注解,可以自动重写 toString() 方法,会输出所有变量。 5. @EqualsAndHashCode 自动生成 equals(Object other) 和 hashCode() 方法 使用 @EqualsAndHashCode 注解,可以自动生成 equals(Object ...

    java中的tostring方法的具体用法

    在实际应用中,我们可以根据需要在用户自定义类型中重写 toString 方法,以返回该对象的属性信息。例如,String 类重写了 toString 方法,返回字符串的值。基本数据类型转换为 String 类型也是通过调用对应包装类的 ...

    JavaSE基础入门视频教程33天之(15) part1

    通过观看"day15_04(常用API)重写equals方法.avi","day15_03(常用API)equals方法比较内存地址.avi","day15_05(常用API)重写toString方法.avi","day15_01(常用API)API概念.avi","day15_02(常用API)Object类概述....

Global site tag (gtag.js) - Google Analytics