public class Cat {	private String name;	private int age;	private double weight;	private Color color;	public Cat(String name, int age, double weight, Color color) {		this.name = name;		this.age = age;		this.weight = weight;		this.color = color;	}		//利用属性来判断Cat是否相同	@Override	public boolean equals(Object obj) {		if (this==obj) {//如果两个Cat是同一个对象则相同			return true;		}		if (obj==null) {//如果两个Cat有一个为null则不同			return false;		}		//如果两个Cat的类型不同则不同		if (getClass()!=obj.getClass()) {			return false;		}		Cat cat = (Cat)obj;		//比较属性		return name.equals(cat.name)&&(age==cat.age)&&				(weight==cat.weight)&&(color.equals(cat.color));	}	//hashCode()方法也是必须要写	public int hashCode(){		return 7 * name.hashCode()+11*new Integer(age).hashCode()+				13 * new Double(weight).hashCode() + 17 * color.hashCode();	}	@Override	public String toString() {		return "Cat [name=" + name + ", age=" + age + ", weight=" + weight				+ ", color=" + color + "]";	}	}

测试输出:

Cat cat1 = new Cat("Java", 12, 21, Color.BLACK);		Cat cat2 = new Cat("C++", 12, 21, Color.WHITE);		Cat cat3 = new Cat("Java", 12, 21, Color.BLACK);		System.out.println("Cat1号:"+cat1);		System.out.println("Cat2号:"+cat2);		System.out.println("Cat3号:"+cat3);		System.out.println("Cat1是否与Cat2相同:"+cat1.equals(cat2));		System.out.println("Cat1是否与Cat3相同:"+cat1.equals(cat3));