说出我的问题有点难。我目前在java中使用库时遇到了很多困难,而且往往不确定如何有效地使用它们。从理论上讲,我知道界面和抽象类是什么,但实际上这些东西对我来说很难使用。 因此,更具体地说,例如,在我使用la4j库中的CCS矩阵的那一刻。我现在想迭代它(每行中的行和每个条目)并想要使用它,但我只找到抽象迭代器(例如RowMajorMatrixIterator)。一般来说:我不知道如何处理来自库的抽象类(或接口)。特别是在这个时刻,作为我的问题的典型实例:如果我有这个抽象迭代器,我如何实际使用它(对于我的CCS矩阵)? 感谢每一位帮助!
答案 0 :(得分:2)
您从事先创建的矩阵中获取迭代器:类Matrix
定义了一个方法rowMajorIterator()
,例如,您可以这样做
RowMajorMatrixIterator it = yourMatrix.rowMajorIterator();
此模式称为"工厂方法"。
正如托马斯指出的那样,它通常被实现为某种内部类,如下所示:
public class MyMatrix extends Matrix {
public RowMajorIterator rowMajorIterator() {
return new RowMajorIterator() { // anonymous class
// needs to implement the abstract methods
public int get() { ... }
...
}
}
}
或
public class MyMatrix extends Matrix {
public RowMajorIterator rowMajorIterator() {
return new MyRowMajorIterator();
}
class MyRowMajorIterator extends RowMajorIterator { // inner, named class
// needs to implement the abstract methods
public int get() { ... }
...
}
}
这些内部类可以访问"外部"的成员。班Matrix
。