如何从 void 方法中获取值?

How to get value from void method?

我有一个挑战,其中包括必须实现的接口。 但是禁止在这些接口上进行更改。

public interface MatrixInterface {
    
    void GetSize(Dimension dim);
}

并且存在具有“宽度和高度”属性的维度 class。

我想创建一个矩阵 class 并使用其他 class 中的 getsize 方法。有没有办法从 void 方法中获取值。

您可以根据维度设置矩阵属性,例如

class Matrix implements MatrixInterface {
    private Integer width;
    private Integer height;

    void GetSize(Dimension dim) {
        this.width = dim.width;
        this.height = dim.height;
    }
}
// Please note that this code isn't clean.

或者 Getter 实际上是 Setter。

class Matrix implements MatrixInterface {
    private Dimension dimension;

    void GetSize(Dimension dim) {
        this.dimension = dim;
    }
}
// Please note that this code isn't clean.

这很不寻常java。不寻常之处在于它是 'legal'(它编译),但它不是惯用的(惯用的 java = 以整个社区倾向于编程的方式编写,以及 java 的作者本身如何作为以及几乎所有可用的库都希望您编写。如果您无法编写惯用的 java,它可能会编译并且 运行 但代码将很难被其他人阅读 java 程序员,你会 运行 在使用其他库时遇到很多摩擦)。

事实上,这太不合常理了,到目前为止,已有 3 个人试图回答,但他们似乎没有听懂,或者他们确实听懂了,但非常震惊,以至于他们自己相信这是另外一回事。

我知道这是一门课程,所以你将不得不接受它,但很遗憾。这是可怕的 java 代码。惯例甚至规定它应该是 getSize,而不是 GetSize。我无法充分强调这有多糟糕。大概有人为这门课程付了钱,他们想要退钱,然后再退一些。通过遵循本课程,您对自己的阻碍可能大于对自己的帮助。中止。弹出。

关键线索是 Dimension,假设它指的是 java.awt.Dimension,是 可变的 。你可以改变它。他们要你做的是:

public void getSize(Dimension d) {
    d.setSize(yourWidth, yourHeight);
}

这可以被调用者使用:

Dimension d = new Dimension();
matrix.getSize(d);
System.out.printf("The matrix size is [%d, %d]\n", d.width, d.height);