List<? extends Number> x5 = new ArrayList<Integer> ();编译会出错吗
时间: 2023-06-03 09:04:11 浏览: 149
不会。这是Java中的泛型,可以将一个 Integer 类型的 ArrayList 赋值给一个 List<? extends Number> 类型的变量。这是因为 Integer 类型是 Number 类型的一个子类。
相关问题
List<? extends Number> x6 = new ArrayList<Object> (); 编译会出错吗
?不会出错。这是一个使用了上限通配符的泛型声明语句,意思是 x6 是一个可以存储 Number 类型及其子类类型的 List。在这里,Object 类型也是 Number 类型的子类,所以编译不会出错。
String类并没有继承Number类为什么List<Optional<? extends Number>> list = new ArrayList<>();这段代码的元素可以是String
在Java中,String类确实没有继承Number类。但是在Java中,可以使用通配符泛型来表示某个类型或其子类型,例如使用 extends 关键字限定通配符的上界,也就是通配符可以代表的最大类型范围。因此,List<Optional<? extends Number>> 这个泛型定义中的 ? extends Number 表示元素类型可以是 Number 类型或其子类型。
当使用 Optional 类型时,可以将其类型参数指定为 ? extends Number,表示 Optional 实例可以包含 Number 类型或其子类型的值。因此,List<Optional<? extends Number>> 这个泛型定义中的 Optional 也可以包含 Number 类型或其子类型的值,包括 String 类型,因为 String 可以通过一些方法转换为 Number 类型,例如 Integer.parseInt(String)。
需要注意的是,在使用 Optional 类型时,如果 Optional 实例中包含的值不是 Number 类型或其子类型,会抛出 ClassCastException 异常。因此,在实际使用中需要进行类型判断和转换,以确保 Optional 实例中包含的值符合要求。
阅读全文