我想出了一个使用如下语法的代码:
public <A extends B> double[][] foo(C arg) {
.... }
通过查看它,我得到了几个问题。
a) 的返回类型foo(C arg)
是<A extends B> double[][]
? 这是什么意思?例如,我会理解返回类型double[][]
,但我无法确定前一个修饰符(也许?)做了<A extends B>
什么?
b) 为什么返回类型中有子类声明?由于 A 是 B 的子类,我们在哪里覆盖或添加任何方法/成员等?对我来说,它似乎是一个子类,只包含基类 A 的相同方法/成员。不是吗?那么写法有区别public <A> double[][] foo(C arg)
吗?
c) 最后,我认为 <> 与 Java 泛型有关,但即便如此,我也看到了类似D<T>
which T 用于参数化原始类型的声明D
。在这里,我尝试删除 <> (因为我不明白它们代表什么)但编译器抱怨。