相关疑难解决方法(0)

使用通配符创建新的通用对象

请解释这个通用代码通配符编译时错误:

//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)

java generics bounded-wildcard

11
推荐指数
1
解决办法
3260
查看次数

泛型通配符实例化

前几天我正在审查其他人的代码,我遇到了引起一些担忧的问题.为了简化,我说我有一个通用的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)

肯定会持有.我总是在泛型中使用通配符来声明方法参数,所以我可能没有经验.

java generics declaration wildcard instantiation

7
推荐指数
1
解决办法
1417
查看次数