请解释这个通用代码通配符编译时错误:
//no compile time error.
List<? extends Number> x = new ArrayList<>();
//compile time error.
List<? extends Number> x = new ArrayList<? extends Number>();
Run Code Online (Sandbox Code Playgroud) 前几天我正在审查其他人的代码,我遇到了引起一些担忧的问题.为了简化,我说我有一个通用的A类和一个抽象的B类.是否允许以下实例化,如果允许,为什么?
Object obj = new A<? extends B>();
Run Code Online (Sandbox Code Playgroud)
我个人从来没有见过像上面这样的实例化,虽然这样的声明如
A<? extends B> obj = null;
Run Code Online (Sandbox Code Playgroud)
肯定会持有.我总是在泛型中使用通配符来声明方法参数,所以我可能没有经验.