方法的返回类型包含子类定义(Method return type contains subclass

2019-10-20 01:27发布

我想出了一个使用语法像这样的代码:

public <A extends B> double[][] foo(C arg) {
.... }

我通过观察它得到了几个问题。

一个)的返回类型foo(C arg)<A extends B> double[][] 这是什么意思? 我所理解的返回类型像double[][]的例子,但我不能确定什么是以前的修改(也许?) <A extends B>呢?

乙)为什么有一个返回类型内的子类的声明? 由于A是我们处在什么位置覆盖或添加任何方法/成员等B的子类? 对我来说,似乎它是一个包含基类A的一样的方法/成员的子类是不是这样呢? 那么,有没有书面授权任何区别public <A> double[][] foo(C arg)

C)最后,我假设<>具有Java泛型做但即使如此,我看到声明像D<T>其中T是用来参数化的原始型D 。 在这里,我试图删除<>(因为我不明白他们代表的是什么),但编译器抱怨。

Answer 1:

  1. 返回类型是double[][]<A extends B>部分是的参数化的通用方法
  2. 的限制 extends B意味着只有一般类型A延伸或实际执行B允许在该方法中。
  3. 不能回答你的第三个问题,因为它需要在方法的身体和更多的上下文的代码。


文章来源: Method return type contains subclass definition