【问题标题】:How to get value from void method? [closed]如何从 void 方法中获取价值? [关闭]
【发布时间】:2021-01-11 13:47:45
【问题描述】:

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

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

并且有一个具有“宽度和高度”属性的 Dimension 类。

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

【问题讨论】:

  • Dimension 是可变的吗?然后你可以简单地在传入的对象中设置值。
  • 谁给了你这么愚蠢的接口 xD 为什么有人想要使用 GET 方法但不能返回任何东西:D

标签: java void


【解决方案1】:

这是非常不寻常的java。不寻常的是它是“合法的”(它可以编译),但它不是惯用的(惯用的 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);

【讨论】:

    【解决方案2】:

    您可以根据 Dimension 设置您的 Matrix 属性,例如

    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.
    

    【讨论】:

    • 显然两者都没有——毕竟调用的是get
    • @rzwitserloot 我从 OP 要求中猜到了一个行为“我想创建一个矩阵类并使用其他类的 getsize 方法。有没有办法从 void 方法中获取价值”。目标是从我目前所理解的 void 方法中的维度中“获取”值......
    • @IQbrod 谢谢大家。您的解决方案对我有用。我知道这个解决方案尚不清楚,但这就是任务。我是新手,所以也许我没有清楚地解释我的问题。但再次感谢您的帮助。
    • @rzwitserloot 谢谢。你的解释清楚而深刻。这对初中学生来说非常重要。
    • @Asya 我永远不会忘记没有愚蠢的问题,而且我们都是从初学者开始的...... StackOverflow 对初学者很粗鲁,因为他们真的不知道如何描述他们的问题(你rn)...但是,嘿!不要放弃,有些人会尽力帮助你;)
    猜你喜欢
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2018-12-28
    • 1970-01-01
    • 2012-09-28
    相关资源
    最近更新 更多