Java通用类的正确类型转换(或任何其他方法)

时间:2011-02-15 21:42:24

标签: java generics casting

在这个问题What is the equivalent of the C++ Pair<L,R> in Java?中,我将在我的代码中使用此示例代码

public boolean equals(Object other) {
    if (other instanceof Pair) {
       Pair otherPair = (Pair) other;
          return 
             ((  this.first == otherPair.first ||
                    ( this.first != null && otherPair.first != null &&
                      this.first.equals(otherPair.first))) &&
              (      this.second == otherPair.second ||
                     ( this.second != null && otherPair.second != null &&
                     this.second.equals(otherPair.second))) );
     }

     return false;
}

Eclipse在“Pair otherPair =(Pair)other”行中警告我“对是原始类型。对泛型类型的引用应参数化”。我尝试将其重写为“配对&lt; A,B&gt; otherPair =(配对&lt; A,B&gt;)其他;”但警告仍在那里。如何正确输入其他以便不会出现警告?谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用

Pair<?, ?> otherPair = (Pair<?, ?>)other;

由于equals使用Object,因此您不会遇到任何麻烦。在这个特定的代码中,类型参数是无关紧要的。