1

我想出了一个使用如下语法的代码:

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。在这里,我尝试删除 <> (因为我不明白它们代表什么)但编译器抱怨。

4

1 回答 1

2
  1. 返回类型是double[][]. <A extends B>部分是泛型方法的参数化
  2. 限制 extends B意味着在此方法中只允许A扩展或实际实现的泛型类型。B
  3. 无法回答您的第三个问题,因为它需要方法主体中的代码和更多上下文。
于 2014-05-02T09:59:12.983 回答