Java 来源中的 "method prototype" 实际上是什么?
What is this "method prototype" actually in this Java source?
我想查看 Apache Commons 数学库中 RealMatrix
class 的 getRowVector
方法的源代码。我在这里找到它:grepcode.
虽然出于某种原因,似乎 none 显示的方法有任何实现;它们看起来都像函数原型:
RealVector getRowVector(int row) throws MatrixIndexException;
经过搜索,我发现 Java 没有原型。上面代码的目的是什么?某处有实际的实施吗?
这很奇怪,因为类似 RealVector
class 的完整实现如我所料;只是RealMatrix
是这样的
RealMatrix 是一个接口。 interface 定义了一个由实现负责实现的契约,但本身不提供任何实现代码(尽管从 Java8 开始它可以有默认方法和静态方法)。您可以使用接口来限制客户端需要了解其正在使用的对象的程度。最基本的例子是 java.util.List,它提供了访问和修改列表的常用方法,并且有多种实现,一些在 JDK 集合库中提供(一种用于数组支持的列表,一种用于链表实现),还有一些在库和框架中实现(例如,Hibernate 有自己的 List 实现,促进持久实体中的延迟加载)。
apidoc page 列出了实现 类:AbstractRealMatrix、Array2DRowRealMatrix、BlockRealMatrix、DiagonalMatrix、OpenMapRealMatrix。
我想查看 Apache Commons 数学库中 RealMatrix
class 的 getRowVector
方法的源代码。我在这里找到它:grepcode.
虽然出于某种原因,似乎 none 显示的方法有任何实现;它们看起来都像函数原型:
RealVector getRowVector(int row) throws MatrixIndexException;
经过搜索,我发现 Java 没有原型。上面代码的目的是什么?某处有实际的实施吗?
这很奇怪,因为类似 RealVector
class 的完整实现如我所料;只是RealMatrix
是这样的
RealMatrix 是一个接口。 interface 定义了一个由实现负责实现的契约,但本身不提供任何实现代码(尽管从 Java8 开始它可以有默认方法和静态方法)。您可以使用接口来限制客户端需要了解其正在使用的对象的程度。最基本的例子是 java.util.List,它提供了访问和修改列表的常用方法,并且有多种实现,一些在 JDK 集合库中提供(一种用于数组支持的列表,一种用于链表实现),还有一些在库和框架中实现(例如,Hibernate 有自己的 List 实现,促进持久实体中的延迟加载)。
apidoc page 列出了实现 类:AbstractRealMatrix、Array2DRowRealMatrix、BlockRealMatrix、DiagonalMatrix、OpenMapRealMatrix。