'未经检查的电话'的语义在Java中

时间:2015-05-08 21:53:58

标签: java generics types

请考虑以下代码:

class Test {
    public static void main(String[] args) {
        new C(new ArrayList<Object>());
    }

    static class C<T>  {
        public C(final List<String> b) {

        }
    }
}

在javac 1.6.0_30下,此代码编译时没有错误(尽管原始类型有警告)。看来,如果以原始方式使用类型,则关闭该类型的所有泛型类型检查。这似乎是编译器通过未经检查的调用的含义,但它似乎很奇怪,它禁用所有通用检查而不仅仅是该类中的泛型。根据JLS或仅仅是编译器错误,这是正确的行为吗?

0 个答案:

没有答案