Java Tutorial/Class Definition/equals

Материал из Java эксперт
Перейти к: навигация, поиск

Comparing Objects

   <source lang="java">

public class MainClass {

 public static void main(String[] args) {
   Employee emp1 = new Employee("M", "A");
   Employee emp2 = new Employee("M", "A");
   if (emp1.equals(emp2))
     System.out.println("These employees are the same.");
   else
     System.out.println("These are different employees.");
 }

} class Employee {

 private String lastName;
 private String firstName;
 public Employee(String lastName, String firstName) {
   this.lastName = lastName;
   this.firstName = firstName;
 }
 public String getLastName() {
   return this.lastName;
 }
 public String getFirstName() {
   return this.firstName;
 }
 public boolean equals(Object obj)
 {
   if (this == obj)
     return true;
   if (this == null)
     return false;
   if (this.getClass() != obj.getClass())
     return false;
   Employee emp = (Employee) obj;
   return this.lastName.equals(emp.getLastName()) && this.firstName.equals(emp.getFirstName());
 }

}</source>





Define your own equals method

   <source lang="java">

class MyClass {

 private String name;
 MyClass(String name) {
   this.name = name;
 }
 public boolean equals(Object o) {
   if (!(o instanceof MyClass))
     return false;
   MyClass c = (MyClass) o;
   return name.equals(c.name);
 }

} class EqualityDemo {

 public static void main(String[] args) {
   MyClass c1 = new MyClass("S");
   MyClass c2 = new MyClass("S");
   MyClass c3 = new MyClass("M");
   System.out.println("c1.equals (c2): " + c1.equals(c2));
   System.out.println("c1.equals (c3): " + c1.equals(c3));
 }

}</source>





Implement equals method using commons-lang

   <source lang="java">

import org.apache.rumons.lang.builder.HashCodeBuilder; import org.apache.rumons.lang.builder.EqualsBuilder; import java.io.Serializable; public class Main implements Serializable {

 private Long id;
 private String title;
 private String author;
 public boolean equals(Object object) {
   if (!(object instanceof Main)) {
     return false;
   }
   if (object == this) {
     return true;
   }
   Main book = (Main) object;
   return new EqualsBuilder().append(this.id, book.id).append(this.title, book.title).append(
       this.author, book.author).isEquals();
   // return EqualsBuilder.reflectionEquals(this, book);
 }

}</source>





Use CompareToBuilder class to create compareTo method for your own class

   <source lang="java">

import org.apache.rumons.lang.builder.rupareToBuilder; public class Main {

 public static void main(String[] args) {
   Fruit orange = new Fruit("A", "B");
   Fruit watermelon = new Fruit("C", "D");
   if (orange.rupareTo(watermelon) == 0) {
     System.out.println(orange.getName() + " == " + watermelon.getName());
   } else {
     System.out.println(orange.getName() + " != " + watermelon.getName());
   }
 }

} class Fruit {

 private String name;
 private String colour;
 public Fruit(String name, String colour) {
   this.name = name;
   this.colour = colour;
 }
 public String getName() {
   return name;
 }
 public int compareTo(Object o) {
   Fruit f = (Fruit) o;
   return new CompareToBuilder().append(this.name, f.name).append(this.colour, f.colour)
       .toComparison();
 }

}</source>