Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LocalDate中的泛型问题_Java_List_Generics_Arraylist_Comparable - Fatal编程技术网

Java LocalDate中的泛型问题

Java LocalDate中的泛型问题,java,list,generics,arraylist,comparable,Java,List,Generics,Arraylist,Comparable,我有以下代码。我希望Arrays.asList(LocalDate.of(2014,1,1),LocalDate.of(2015,2,2))转换成LocalDate的列表。但是我在max(dates)中遇到编译时错误。这个错误的原因可能是什么 import java.time.LocalDate; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class C { p

我有以下代码。我希望
Arrays.asList(LocalDate.of(2014,1,1),LocalDate.of(2015,2,2))
转换成
LocalDate的列表。但是我在
max(dates)
中遇到编译时错误。这个错误的原因可能是什么

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class C {

    public static <T extends Comparable<T>> T max(List<T> d) {
        if (d.size() == 0) {
            return null;
        }

        T maxValue = d.get(0);
        for (T temp : d) {
            if (maxValue.compareTo(temp) < 0) {
                maxValue = temp;
            }
        }

        return maxValue;
    }

    public static void main(String[] args) {
        List<LocalDate> dates = new ArrayList<>();
        dates.add(LocalDate.of(2015, 9, 15));
        dates.add(LocalDate.of(2010, 9, 1));

        max(dates);     //This line generates compile error.
        max(Arrays.asList(LocalDate.of(2014, 1, 1), LocalDate.of(2015, 2, 2)));
    }
}
import java.time.LocalDate;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
公共C类{
公共静态最大温度(列表d){
如果(d.size()==0){
返回null;
}
T最大值=d.get(0);
用于(温度:d){
如果(最大值比较到(温度)<0){
最大值=温度;
}
}
返回最大值;
}
公共静态void main(字符串[]args){
列表日期=新建ArrayList();
添加日期(2015年9月15日的本地日期);
添加(LocalDate.of(2010,9,1));
max(dates);//此行生成编译错误。
max(Arrays.asList(LocalDate.of(2014,1,1),LocalDate.of(2015,2,2));
}
}
编译时错误:
类型C中的方法max(List)不适用于参数(List)

预期会出现编译错误,因为它没有实现接口
Comparable
,因此它不符合
公共静态T max(List d)
中的类型
T


相反,
LocalDate
实现了
ChronoLocalDate
,它本身实现了
Comparable
。这意味着第二行(使用
array.asList
)实际上编译得很好:类型
T
被发现是
ChronoLocalDate
LocalDate
实现了
可比
不可比

因此,改变:

public static <T extends Comparable<T>> T max(List<T> d) { ... }
publicstatictmax(列表d){…}
致:


public static编译错误是什么?类型C中的方法max(List)不适用于参数(List)。
List什么类型的数据可以
Arrays.asList(LocalDate.of(2014,1,1),LocalDate.of(2015,2,2))
return?@PradipKharbuja就是这样:您可以在一个列表、一个列表以及基本上在LocalDate的每个超类型中检索此结果。但作为另一个泛型方法的参数,编译器将选择“最佳”匹配类型(T extends Comparable),即此处的ChronoLocalDate。
public static <T extends Comparable<? super T>> T max(List<T> d) { ... }