如何摆脱对“ compareTo(T)”警告的未经检查的调用?

问题描述 投票:0回答:1

我有一个通用类来表示一行值中的间隔。

public class Interval<T extends Comparable<T>> {

    private boolean isStartInclusive;
    private T start;
    private T end;
    private boolean isEndInclusive;

    //constructors and getters and setters

}

我有此间隔的相同类型的列表。我正在尝试根据它们的起始值对它们进行排序。

因此,如果列表是

{[1,2], [0,3], [-10,4]}

我想得到

{[-10,4], [0,3], [1,2]}

如果列表是

{['e','v'], ['a','d'], ['c','f']}

我想得到

{['a','d'], ['c','f'], ['e','v']}

排序代码如下。

public static <T extends Comparable<T>> List<Interval<T>> sortIntervals(List<Interval<T>> intervals) {

    Arrays.sort(intervals.toArray(new Interval[0]), (o1, o2) -> o1.getStart().compareTo(o2.getStart()));

    return intervals;

}

但是在调用Arrays.sort的行中,有一个编译器警告:Unchecked call to 'compareTo(T)' as a member of raw type 'java.lang.Comparable'

java generics comparable
1个回答
1
投票

未经检查的警告是由于您的原始类型数组new Interval[0]而引起的。

© www.soinside.com 2019 - 2024. All rights reserved.