2017-01-31 16 views
0

Я пытаюсь запустить программу, но продолжаю получать ошибку незаконного начала выражения, также не знаю много о хэш-коде. как правильно использовать его и что означает этот код?Я пытаюсь запустить программу в java, используя хэш-код, но я продолжаю получать результат как незаконный запуск выражения в хеш-код?

public class Test1 { 
private int num; 
private String data; 

public boolean equals(Object obj) { 
    if (this == obj) 
     return true; 
    if (obj == null) || (obj.getClass() != this.getClass()) 
    return false; 
    //objects must be Test at this point 
    Test test = (Test) obj; 
    return num == test.num && 
     data == test.data || (data != null && data.equals(test.data)); 
} 

public int hashCode() { 
    int hash = 7; 
    hash = 31 * hash + num; 
    hash = 31 * hash + (null == data ? 0 : data.hashCode()); 
    return hash; 
} 

} 

ответ

0

Я вижу много ошибок синтаксиса в вашем коде, попробуйте ниже класса.

 public class Test1 { 

     private int num; 
     private String data; 

     public Test1(int num, String data) { 
      this.num = num; 
      this.data =data; 
     } 

     public boolean equals(Object obj) { 
      if (this == obj) 
       return true; 
      if ((obj == null) || (obj.getClass() != this.getClass())) 
       return false; 
      // Objects must be Test at this point. 
      Test1 test = (Test1) obj; 
      return num == test.num && data == test.data || (data != null && data.equals(test.data)); 
     } 

     public int hashCode() { 
      int hash = 7; 
      hash = 31 * hash + num; 
      hash = 31 * hash + (null == data ? 0 : data.hashCode()); 
      return hash; 
     } 


     public static void main(String[] args) { 

      Test1 obj1 = new Test1(1,"one"); 
      Test1 obj2 = new Test1(2,"two"); 

      Test1 obj3 = new Test1(1,"one"); 
      Test1 obj4 = new Test1(2,"two"); 

      System.out.println(obj1.equals(obj2)); 
      System.out.println(obj1.equals(obj3)); 
      System.out.println(obj2.equals(obj3)); 
      System.out.println(obj2.equals(obj4)); 
     } 
    } 
0

Ваши скобки в методе equals выглядеть неправильно мне ...

попробовать

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

вам также нужно изменить отливку к нужному типу объекта

Test1 test = (Test1)obj;