调用一个没有实际参数但具有显式类型参数的泛型方法时发生编译器错误

调用一个没有实际参数但具有显式类型参数的泛型方法时发生编译器错误

本文介绍了调用一个没有实际参数但具有显式类型参数的泛型方法时发生编译器错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从书籍Java Generic and Collections1.4节有这段代码sniplet

  class Lists {
公共静态< T>列表与LT; T> toList(T ... arr){
List< T> list = new ArrayList< T>();
for(T elt:arr)
list.add(elt);
返回列表;


然后有这样的说法:

所以我想了解为什么会出现编译时错误。

解决方案

至于为什么规范是这样写的,只有语言设计者才能回答。

From the book "Java Generic and Collections", section 1.4 there is this code sniplet

class Lists {
    public static <T> List<T> toList(T... arr) {
        List<T> list = new ArrayList<T>();
        for (T elt : arr)
            list.add(elt);
        return list;
    }
}

Then there is this statement:

So I am trying to understand why there would be compiler-time error.

解决方案

Because that's to specification. See JLS §15.12:

As to why the specification was written that way, only the language designers can answer that.

这篇关于调用一个没有实际参数但具有显式类型参数的泛型方法时发生编译器错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 05:46