相关疑难解决方法(0)

在Java语法中,Class <?扩展某事>

Class<? extends Something>

这是我的解释,它是班级模板但课程?表示类的名称未确定,它扩展了Something类.

如果我的解释有问题,请告诉我.

java generics

53
推荐指数
4
解决办法
7万
查看次数

<E extends Number>和<Number>之间有什么区别?

这个方法声明有什么区别:

public static <E extends Number> List<E> process(List<E> nums){
Run Code Online (Sandbox Code Playgroud)

 public static List<Number> process(List<Number> nums){
Run Code Online (Sandbox Code Playgroud)

你会在哪里使用前者?

java generics

36
推荐指数
2
解决办法
1万
查看次数

任何简单的方法来解释为什么我不能做List <Animal> animals = new ArrayList <Dog>()?

我知道为什么不应该这样做.但有没有办法向外行人解释为什么这是不可能的.你可以轻松地向外行解释:Animal animal = new Dog();.狗是一种动物,但是一系列的狗并不是动物的清单.

java oop generics covariance

22
推荐指数
5
解决办法
5063
查看次数

java泛型协方差

我无法理解以下文章:http: //www.ibm.com/developerworks/java/library/j-jtp01255.html

下,

泛型不是协变的

作者说,

因为ln是一个List,所以添加一个Float似乎是完全合法的.但是如果ln与li混淆,那么它将破坏li定义中隐含的类型安全承诺 - 它是一个整数列表,这就是泛型类型不能协变的原因.

我无法理解它所说的"如果ln与li混淆"的部分.作者对别名的含义是什么?(参考?).引用行上方的代码片段似乎说明了什么在java中是非法的而不是为什么.如果有人能用一个例子来解释,对我来说会很有帮助.提前致谢.

java generics alias covariance

20
推荐指数
2
解决办法
1万
查看次数

为什么将变量声明为通配符类型

Java教程中,有时会这样写:

Set<?> unknownSet = new HashSet<String>();
Run Code Online (Sandbox Code Playgroud)

虽然我了解在类定义和方法中使用类型参数和通配符的好处,但我想知道以下问题:

  • 为变量指定包含通配符的类型有什么好处?
  • 在现实生活中,人们会这样做吗?什么时候这样做?

java generics wildcard

5
推荐指数
1
解决办法
2614
查看次数

泛型方法覆盖8

为什么不能 void say(List< ? extends Number> list)被覆盖 void say(List< Number> list).

尝试编译时发生名称冲突.

java generic-programming

3
推荐指数
1
解决办法
93
查看次数

标签 统计

java ×6

generics ×5

covariance ×2

alias ×1

generic-programming ×1

oop ×1

wildcard ×1