java 7异构容器可分配性

时间:2016-03-30 06:59:45

标签: java generics

以下Java 7代码编译良好,没有类型安全警告:

@SuppressWarnings("javadoc")
public class Foo {
    public static class Bar<T> {
        public final Class<T> type;

        public Bar(Class<T> type) {
            this.type = type;
        }
    }

    @SuppressWarnings("unused")
    public static void main(String[] args) {
        new Foo(
                Arrays.asList(
                        new Bar<>(Object.class),
                        new Bar<>(String.class)));
    }

    public final List<Bar<?>> list;

    public Foo(List<Bar<?>> list) {
        this.list = list;
    }
}

然而,改变

new Bar<>(Object.class),

new Bar<>(String.class),

无法编译并出现以下错误:

The constructor Foo(List<Foo.Bar<String>>) is undefined

使用Java 8进行编译成功。根据StackOverflow上的帖子

Java 8中有一些改进现在可以编译。

现在的问题是Java 7的最佳解决方法。

阿德里安。

0 个答案:

没有答案