2015-01-15 3 views
-1

이것은 매우 간단한 프로그램입니다. 그러나 컴파일 할 때마다 otherObject.fstotherObject.snd 변수를 찾을 수 없다는 오류가 발생하여 equals 메서드가 제대로 작동하지 않습니다. 다른 모든 것은 잘 작동합니다. 나는 setFstsetSnd 메쏘드의 문제를 믿는다. 다양한 변형을 시도했지만 제대로 구사할 수 없습니다. 어떤 도움을 많이 주시면 감사하겠습니다!쌍이 같은지 검사합니다.

public class Pair<T1, T2> implements PairInterface<T1, T2> 
{ 
    // TO DO: Instance Variables 
    public T1 first; 
    public T2 second; 
    public T1 fst; 
    public T2 snd; 

    public Pair(T1 aFirst, T2 aSecond) 
    { 
     first = aFirst; 
     second = aSecond; 
    } 

    /** 
    * Gets the first element of this pair. 
    * @return the first element of this pair. 
    */ 
    public T1 fst() 
    { 
     return this.first; 
    } 

    /** 
    * Gets the second element of this pair. 
    * @return the second element of this pair. 
    */ 
    public T2 snd() 
    { 
     return this.second; 
    } 

    /** 
    * Sets the first element to aFirst. 
    * @param aFirst the new first element 
    */ 
    public void setFst(T1 aFirst) 
    { 
     // TO DO 
     aFirst = fst; 
    } 

    /** 
    * Sets the second element to aSecond. 
    * @param aSecond the new second element 
    */ 
    public void setSnd(T2 aSecond) 
    { 
     // TO DO 
     aSecond = snd; 
    } 

    /** 
    * Checks whether two pairs are equal. Note that the pair 
    * (a,b) is equal to the pair (x,y) if and only if a is 
    * equal to x and b is equal to y. 
    * @return true if this pair is equal to aPair. Otherwise 
    * return false. 
    */ 
    public boolean equals(Object otherObject) 
    { 
     if (otherObject == null) 
     { 
      return false; 
     } 

     if (getClass() != otherObject.getClass()) 
     { 
      return false; 
     } 
     if (otherObject.fst.equals(this.fst) && otherObject.snd.equals(this.snd)) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
     // TO DO 
    } 

    /** 
    * Generates a string representing this pair. Note that 
    * the String representing the pair (x,y) is "(x,y)". There 
    * is no whitespace unless x or y or both contain whitespace 
    * themselves. 
    * @return a string representing this pair. 
    */ 
    public String toString() 
    { 
     // TO DO 
     return "("+first.toString()+","+second.toString()+")"; 
    } 
} 
+0

'fst' 회원을 가진'Object'에 대해 들어 본 적이 없습니다;). 나는 당신이 캐스팅을 찾고, 대신'fst()'와'snd()'를 사용한다고 확신한다. –

답변

2

otherObject는 Object 유형으로 선언되므로 생성 한 클래스의 속성이 없습니다. 그것을 비교하려고하는 객체와 동일한 유형이어야합니다.

+0

그 트릭을 했어, 나는 내가 몇 시간 동안 내 머리를 긁적 적이라는 것을 놓친다는 것을 믿을 수 없다. 고맙습니다! –