Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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
如何用E编写Java泛型方法。。。元素和返回列表<;E>;_Java_Generics - Fatal编程技术网

如何用E编写Java泛型方法。。。元素和返回列表<;E>;

如何用E编写Java泛型方法。。。元素和返回列表<;E>;,java,generics,Java,Generics,我想写一个方法如下 public static <E> ArrayList<E> newList(E... elements){ ArrayList<E> list = new ArrayList<E>(elements.length); addAll(list,elements); return list; } publicstaticarraylistnewlist(E…元素){ ArrayList=新的ArrayLi

我想写一个方法如下

public static <E> ArrayList<E> newList(E... elements){
    ArrayList<E> list = new ArrayList<E>(elements.length);
    addAll(list,elements);
    return list;
}
publicstaticarraylistnewlist(E…元素){
ArrayList=新的ArrayList(elements.length);
addAll(列表、元素);
退货清单;
}
当我像这样使用它时,它就起作用了

List<String> a = ListUtils.newList("a","b");
List a=ListUtils.newList(“a”、“b”);
但在这种情况下它无法编译

List<Class> c = ListUtils.newList(String.class,Long.class);
listc=ListUtils.newList(String.class,Long.class);
我怎样才能解决这个问题?
谢谢大家!

似乎你在类型推断上被绊倒了。它将其余元素绑定到一种类型的
类,该类扩展了可比较和可序列化的
(来自编译器错误)

您可以通过在通用列表中添加通配符extends子句来解决此问题;您只关心实际上可以指定为
类的元素

List<? extends Class> c = ListUtils.newList(String.class,Long.class);

List如果我理解你的意思,那么你可以用通配符()这样做


newList
编译良好…如果静态导入
Collections.addAll
,则需要处理
元素
为空。它当前将导致NullPointerException。
List>newList(String.class,Long.class)”。@PaulBellora编辑。谢谢这似乎与番石榴中现有的公用设施非常相似。如果您只是需要一个列表,它也非常类似于
数组。如果您的问题是关于编译错误的,那么asList
始终提供编译错误。谢谢!我还发现这个语句可以编译:List>newList(String.class,Long.class);那么,这只是一个“使用”问题,而不是一个方法问题吗?
public static void main(String[] vargs) {
  List<Class<?>> c = ListUtils.<Class<?>>newList(String.class,Long.class);
}
public static <E> List<E> newList(E... elements) {
  List<E> list = new ArrayList<E>((elements != null) ? elements.length : 0);
  for (E elem : elements) {
    list.add(elem);
  }
  return list;
}