【问题标题】:setter needs to update the object and return something JAVAsetter 需要更新对象并返回一些 JAVA
【发布时间】:2017-09-08 03:08:31
【问题描述】:
setPriority(priority: int): ToDoItem

setWhat(what: String): ToDoItem

setWhen(when: String): ToDoItem

三个 setter 中的每一个都返回更新后的对象。这与过去的普通 void 版本有点不同。

这是一个数组列表

这就是我的 UML 所说的。

我完全迷路了,我什至不知道如何开始让 setter 返回某个东西的更新版本,我知道它是一个 for 循环,但我失去了它的虚幻,任何帮助推动我正确方向表示赞赏

【问题讨论】:

    标签: java setter


    【解决方案1】:

    您的 UML 似乎基于 fluent interface,您通常会喜欢 return this;

    public ToDoItem setPriority(int priority) {
        this.priority = priority;
        return this;
    }
    

    这个想法是调用者可以链接方法调用。

    ToDoItem a = new ToDoItem().setPriority(10).setWhat("what").setWhen("right now");
    

    【讨论】:

    • 共有 3 个类。一个 main、WeeklyToDoList 和 ToDoList。 ToDoList 类是具有 2 个构造函数以及 setter 和 getter 的基本类,但我的教授指定 setter 将返回对象的更新版本,您的做法会更新我的对象并返回新版本吗?跨度>
    • 这正是它的作用。第一行代码更新对象,第二行返回该对象(“t​​his”),完成更新。
    • @MLeuck3 没有“新版本”,实例没有改变 - 但是是的,该值已更新并返回包含该值的同一实例。这就是为什么 setter(或 mutator)通常不会返回任何东西(它不会创建任何东西)。
    【解决方案2】:

    如果我没听错的话,你说的是流利的 api:

    class ToDoItem{
        private int priority;
        private String what;
        private String when;
    
        public ToDoItem setPriority(int priority) {
            this.priority = priority;
            return this;
        }
    
        public ToDoItem setWhen(String when) {
            this.when = when;
            return this;
        }
        public ToDoItem setWhat(String what) {
            this.what = what;
            return this;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2019-05-02
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      相关资源
      最近更新 更多