List和ArrayList在泛型中的特殊行为

Jok*_*ker 7 java list

以下代码工作正常,而不应该compile.

我不知道为什么一个分配ListString被允许的.

它只发生在List接口上.Array List按预期更改为工作正常,不再编译.

public class Test {
        public static <T extends List<Number>> T newList() {
            return null;
        }

        public static void main(String[] args) {
            String s = newList();
        }
    }
Run Code Online (Sandbox Code Playgroud)

请帮我理解这个行为.