方法返回类型包含子类定义

时间:2014-05-02 09:55:01

标签: java generics return-type covariant

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

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)最后我想&lt;&gt;与Java泛型有关,但即便如此,我也看到D<T>这样的声明,其中T用于参数化原始类型D。在这里,我尝试删除&lt;&gt; (因为我不明白他们的立场),但编译器抱怨。

1 个答案:

答案 0 :(得分:2)

  1. 返回类型为double[][]<A extends B>部分是generic method
  2. 的参数化
  3. restriction extends B表示此方法只允许扩展或实际实施A的通用类型B
  4. 无法回答您的第三个问题,因为它需要方法正文中的代码和更多上下文。