我想出了一个使用如下语法的代码:
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)
?
D<T>
这样的声明,其中T用于参数化原始类型D
。在这里,我尝试删除&lt;&gt; (因为我不明白他们的立场),但编译器抱怨。
答案 0 :(得分:2)
double[][]
。 <A extends B>
部分是generic method extends B
表示此方法只允许扩展或实际实施A
的通用类型B
。