Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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 创建泛型类的列表_Java_Generics_Java 7 - Fatal编程技术网

Java 创建泛型类的列表

Java 创建泛型类的列表,java,generics,java-7,Java,Generics,Java 7,我有一个实用方法,可以从某个对象中创建一个元素列表: public static final <T> List<T> list(T t) { final List<T> rv = new ArrayList<>(); rv.add(t); return rv; } 公共静态最终列表(T){ 最终列表rv=新的ArrayList(); rv.添加(t); 返回rv; } 我还有一个方法,它接受一个类型为List的参数。我对

我有一个实用方法,可以从某个对象中创建一个元素列表:

public static final <T> List<T> list(T t) {
    final List<T> rv = new ArrayList<>();
    rv.add(t);
    return rv;
}
公共静态最终列表(T){
最终列表rv=新的ArrayList();
rv.添加(t);
返回rv;
}
我还有一个方法,它接受一个类型为
List的参数。我对这两种方法都不太确定,但它在Java8中工作。9号刚出来;)

publicstaticvoidmain(字符串[]args)引发异常{
最终类aClass=Integer.Class;

最终列表能够在
javac1.8.0144
上使用
-source 7-target 7
进行复制

如果您只打算从列表中删除一些内容,那么可以使用
?extends Class

编译器似乎无法协调
List
final List=List(aClass)的通配符类型;
@抑制警告(“未选中”)

最终列表为什么您要编写自己版本的
Collections.singletonList()
?解决方案似乎是更新您的Java版本,这在
1.8.0_144
中对我来说很好。我尝试了
Collections.singletonList(aClass)
数组。在此之前,asList
仍然会给出相同的错误。我想知道发生了什么。@Jornverne,唉,我不需要口述。可能会有帮助1+,通常简单地提供更多类型信息就可以解决这类谜题
final Class<?> aClass = Integer.class;
final List<Class<?>> trivialListOfClasses = list(aClass);
[javac] /some/path/Foo.java:41: error: incompatible types
[javac]             final List<Class<?>> trivialListOfClasses = list(aClass);
[javac]                                                                  ^
[javac]   required: List<Class<?>>
[javac]   found:    List<Class<CAP#1>>
[javac]   where CAP#1 is a fresh type-variable:
[javac]     CAP#1 extends Object from capture of ?
[javac] 1 error
public static void main(String [] args) throws Exception {
    final Class<?> aClass = Integer.class;
    final List<Class<?>> trivialListOfClasses = Program.list(aClass);

}

public static final <T> List<T> list(T t) {
    final List<T> rv = new ArrayList<>();
    rv.add(t);
    return rv;
}
Class<?> aClass = Integer.class;
List<? extends Class<?>> trivialListOfClasses = list(aClass);
Class<?> bClass = trivialListOfClasses.get(0); // works
// trivialListOfClasses.add(String.class); // doesn't work, though
Class<?> aClass = Integer.class;
List<Class<?>> trivialListOfClasses = Util.<Class<?>>list(aClass);
Class<?> bClass = trivialListOfClasses.get(0); // works
trivialListOfClasses.add(String.class); // also works
final List<Class<?>> trivialListOfClasses = list(aClass);
final List<?> trivialList = list(aClass);
@SuppressWarnings("unchecked")
final List<Class<?>> trivialListOfClasses = (List<Class<?>>) trivialList;