commons-lang

package com.mingjian.entity;

 

import java.io.Serializable;

 

import org.apache.commons.lang.builder.CompareToBuilder;

import org.apache.commons.lang.builder.EqualsBuilder;

import org.apache.commons.lang.builder.HashCodeBuilder;

import org.apache.commons.lang.builder.ToStringBuilder;

 

/**

 * 把一个对象放到集合框架中的对象中,必须实现equalshashCode方法,

 * 若是对这个类的对象进行排序,必须实现Comparable接口中的compareTo方法。

 * @author mingjian.zheng

 *

 */

public class Course implements Serializable,Comparable<Course>{

         private int id;

         private String name;

        

         public int getId() {

                   return id;

         }

         public void setId(int id) {

                   this.id = id;

         }

         public String getName() {

                   return name;

         }

         public void setName(String name) {

                   this.name = name;

         }

         /**

          * equals契约不适用于null对象,而且两种不同类型的对象不能相等,equals方法显然有别于==操作符

          * (如果两个对象有相同的引用,后者将返回true,因此两个对象必相等)。两个对象可以相等(equals返回true),

          * 但是使用不同的引用

          */

         @Override

         public boolean equals(Object obj) {

                   // TODO Auto-generated method stub

                   if(this == obj){

                            return true;

                   }

                   if(obj == null || obj.getClass() != this.getClass()){

                            return false;

                   }

                   Course course = (Course)obj;

                   return new EqualsBuilder().append(this.id, course.id).append(this.name, course.name).isEquals();

         }

         /**

          * hashCode方法也有一个契约,但是不像equals的契约那样正式。和equals一样,结果必须一致。对于对象foobar

          * 如果foo.equals(bar)返回true,那么foobarhashCode方法必须返回相同的值。如果foobar不相等,则不要求

          * 返回不同的散列码,但是Javadocs提到,若果这些对象有不同的结果,通常会运行的更好一些

          *

          * 重要的是要正确的初始化HashCodeBuilder。构造函数带有两个int,它使用这两个参数来创建一个散列码

          * 这两个int必须是奇数

          */

         @Override

         public int hashCode() {

                   // TODO Auto-generated method stub

                   return new HashCodeBuilder(11,21).append(this.id).append(this.name).toHashCode();

         }

         /**

          * 控制对象如何排序

          */

         public int compareTo(Course o) {

                   // TODO Auto-generated method stub

                   return new CompareToBuilder().append(this.id, o.id).append(this.name, o.name).toComparison();

         }

        

         @Override

         public String toString() {

                   // TODO Auto-generated method stub

                   return new ToStringBuilder(this).append("id",this.id).append("name",this.name).toString();

         }

}

 

 

你可能感兴趣的:(框架,String,object,null,equals,Class)