Java警告以实施可比性

  • 本文关键字:可比性 警告 Java java
  • 更新时间 :
  • 英文 :


我正在尝试使用collections.sort。在自定义对象的数组列表上,但是我会收到警告,我不知道为什么

Warning: Type safety: Unchecked invocation 
sort(ArrayList<CharProfile>) of the generic method sort(List<T>) 
of type Collections

使用此代码:

ArrayList<CharProfile> charOccurrences = new ArrayList<CharProfile>();
...
Collections.sort(charOccurrences);

这是我的方法:

public class CharProfile implements Comparable {
...
@Override
public int compareTo(Object o) {
        if (this.probability == ((CharProfile)o).getProbability()) {
            return 0;
        }
        else if (this.probability > ((CharProfile)o).getProbability()) {
            return 1;
        }
        else {
            return -1;
        }
 }
}

应使用类型安全实现可比性,这是<CharProfile>

public class CharProfile implements Comparable<CharProfile>{
       @Override
       public int compareTo(CharProfile cp) {
       ...
       }
}

您正在使用仿制药,因此将传递给方法CharProfile而不是Object的类型进行操作。

我还建议您重新安排比较,如图所示,以防概率是双重的。

@Override
public int compareTo(CharProfile o) {
        if (this.probability < o.getProbability()) {
            return -1;
        }
        else if (this.probability > o.getProbability()) {
            return 1;
        }
        else {
            return 0;
        }
}

注意到已经回答了,但无论如何都是我的输入:)

import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
public class CharProfile implements Comparable <CharProfile>{
  public void doStuff(){
    List<CharProfile> charOccurrences = new ArrayList<CharProfile>();
    Collections.sort(charOccurrences);
  }
  @Override
  public int compareTo(CharProfile o) {
    return -1;
  }
}

最新更新