这个"方法原型"是什么?实际上在这个Java源代码?

时间:2015-07-22 16:42:22

标签: java prototype apache-commons

我想查看Apache Commons Math库中getRowVector类的RealMatrix方法的源代码。我在这里找到了它:grepcode

出于某种原因,似乎所示的方法都没有任何实施;它们看起来都像函数原型:

RealVector getRowVector(int row) throws MatrixIndexException;

经过搜索,我发现Java没有原型。上面代码的目的是什么?在某处有实际的实现吗?

这很奇怪,因为类似RealVector类的完整实现是按照我的预期给出的;它只是RealMatrix,就像这样。

1 个答案:

答案 0 :(得分:3)

RealMatrix是一个界面。 interface定义了一个实现负责实现的契约,但没有提供任何实现代码本身(尽管从Java8开始它可以有默认方法和静态方法)。您可以使用界面来限制客户端需要了解的有关其正在使用的对象的数量。最基本的例子是java.util.List,它提供了访问和修改列表的常用方法,并且有多个实现,一些在JDK集合库中提供(一个用于由数组支持的列表,一个用于链表实现) ,有些在库和框架中实现(例如,Hibernate有自己的List实现,可以在持久化实体中实现延迟加载)。

apidoc page列出了实现类:AbstractRealMatrix,Array2DRowRealMatrix,BlockRealMatrix,DiagonalMatrix,OpenMapRealMatrix。