一个实体类基类实现

为了观察变量方便,我们通常会重写实体类模型的toString方法,可是每一个类都写。有些冗余。

事实上,能够这样子:

package others;

import java.io.Serializable;
import java.lang.reflect.Field;

import org.apache.commons.lang3.builder.ToStringBuilder;
/**
 * 重写toString()的实体类基类
 * @author limenghua
 *
 */
public class BaseEntity implements Serializable {

	private static final long serialVersionUID = 4861363281663993175L;

	/**
	 * toString
	 * 打印演示样例:[email protected][name=张三, ,amount=500.0, ]
	 */
	@Override
	public String toString() {
		ToStringBuilder builder = new ToStringBuilder(this);
		Field[] fields = this.getClass().getDeclaredFields();
		try {
			for (Field f : fields) {
				f.setAccessible(true);
				builder.append(f.getName(), f.get(this)).append("\n");
			}
		} catch (Exception e) { // Suppress
			builder.append("toString builder encounter an error");
		}
		return builder.toString();
	}
}

实体类继承这个类就可以:

public class Account extends BaseModel{……}

或者,我们能够用一种更加简单的方式写基类:

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.io.Serializable;

/**
 * 重写toString()的实体类基类
 *
 * @author limenghua
 */
public class BaseModel implements Serializable {

    private static final long serialVersionUID = 4861363281663993175L;

    /**
     * toString
     * 打印演示样例:[email protected][
     * name=张三
     * amount=500.0
     * ]
     */
    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this,
                ToStringStyle.MULTI_LINE_STYLE);
    }
}

打印效果:

时间: 2024-08-27 23:21:03

一个实体类基类实现的相关文章

JDBC之——一个单线程JDBC基类和一些注意事项

下面的一个DBase基类提供了一些jdbc的基本操作,配置文件的配置部分并不准确,只是在自己机器上的mysql中测试过.. 数据库的增删改方法中都在开始调用了getConnection方法,末尾调用了Close方法:数据库的查询中没有调用close方法,因为一旦调用了close方法,就无法用RecodeSet操作查询结果了,所以在调用了查询方法后,要调用close方法,防止出现 too many connections 错误. 此外,DBase中的所有对象都是static的,所以在使用时不要调用

Entity Framework 实体框架的形成之旅--基类接口的统一和异步操作的实现(3)

在本系列的第一篇随笔<Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)>中介绍了Entity Framework 实体框架的一些基础知识,以及构建了一个简单的基于泛型的仓储模式的框架:在随笔<Entity Framework 实体框架的形成之旅--利用Unity对象依赖注入优化实体框架(2)>则持续优化这个仓储模式的实体框架,主要介绍业务逻辑层的构建,以及利用Unity和反射进行动态的对象注册.本篇主要介绍基类接口的统一和异步操作的实现等方

Android App框架设计之编写基类BaseActivity

Android App框架设计之编写基类BaseActivity 编写基类BaseActivity - OOP里面子类里面能够共享父类的方法,提高代码的可复用性 - 基类的编写要根据实际项目的情况,有的可能很简单 比如只是显示 "关于" 信息, 业务功能非常少 你可以不用继承基类进行扩展 BaseActivity继承Activity 还是 FragmentActivity 还是其它? 也是根据你的技术要求,因为解决问题的方法有很多种,或者你根本不用写基类也能完成工作. 我们的目的是编写

当this指针成为指向之类的基类指针时,也能形成多态

this指针: 1)对象中没有函数,只有成员变量 2)对象调用函数,通过this指针告诉函数是哪个对象自己谁. 1 #include<iostream> 2 using namespace std; 3 class Shape 4 { 5 public: 6 //void cal_display(Shape* this) 7 void cal_display(){ 8 display(); 9 this->display(); 10 } 11 private: 12 virtual vo

C++中虚基类

摘自<C++程序设计> 如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员. C++提供虚基类(virtual base class)的方法,使得在继承间接共同基类时只保留一份成员. 下面举例说明: 在如下的图中: Person类是Student和Teacher的基类,而Graduate类又继承自Student和Teacher类. 如果使用虚基类的话,Graduate将有两份age拷贝,两份gender拷贝,两份name

C++的虚基类知识点

当在多条继承路径上有一个公共的基类,在这些路径的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),若只想保存这个基类的一个实例,可以将这个公共基类说明为虚基类. class x1:virtual public x{//... ...};class x2:virtual public x{//... ...};虚基类的初始化 虚基类(虚拟继承)的初始化与一般多继承的初始化在语法上是一样的,但构造函数的调用次序不同. 派生类的构造函数的调用次序有三个原则:(1)虚基类的构造函数在非虚基类之

条款7:为多态的基类声明虚析构函数。

任何的类只要带有一个virtual函数那么就集合可以确定其应该有一个virtual析构函数. 同样的如果一个函数不含有virtual函数,那么通常意味着其不是一个基类函数,而且为一个不是基类的类声明virtual的析构函数是十分糟糕的事情,不要这样做.具体原因在下面: 1.首先,想要实现出virtual函数,对象必须要携带某些信息,.信息通过vptr来实现,这个vptr指向一个由函数指针构成的数组,即vtbl.盲目的去使用虚函数就会使得浪费资源.(一般人的经验是,只有当函数需要使用一个虚函数的时

【Android先进】我们为什么要创建Activity基类Activity什么是一般的基类方法

今天,它可以被视为只是基本完成了其首个商业项目,在发展过程中,风格,然而随着工作经验的积累.最终開始慢慢的了解到抽象思想在面向对象编程中的重要性,这一篇简单的介绍一下我的一点收获. 首先,在如今的项目中使用的主要是afinal框架,并且这个框架确实比較不错,省去了不少工作量.在编写Activity的过程中,基本都是直接继承自FinalActivity类,这样能够使用这个类给我们封装好的不少的方法,可是随着项目慢慢推进,这样的直接继承框架类的一些缺点也開始慢慢的显现出来.最基本的就是扩展性受到了一

C++虚基类详解

1.虚基类的作用从上面的介绍可知:如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员.在引用这些同名的成员时,必须在派生类对象名后增加直接基类名,以避免产生二义性,使其惟一地标识一个成员,如    c1.A::display( ).在一个类中保留间接共同基类的多份同名成员,这种现象是人们不希望出现的.C++提供虚基类(virtual base class )的方法,使得在继承间接共同基类时只保留一份成员.现在,将类A声明为