【问题标题】:Change Multiple properties of same object [duplicate]更改同一对象的多个属性[重复]
【发布时间】:2015-10-27 05:10:40
【问题描述】:

在Java中有什么方法可以实现这样的:

    jPanel1.label1
        .setText("something")
        .setEnabled(something)
        .setVisible(something)

而不是一遍又一遍地输入相同的变量名?谢谢!

【问题讨论】:

    标签: java


    【解决方案1】:

    是的。关注builder pattern,实现你想要的。它的每个方法在修改后返回相同的实例。

    这里直接粘贴示例:

    public class StreetMap {
        private final Point origin;
        private final Point destination;
    
        private final Color waterColor;
        private final Color landColor;
        private final Color highTrafficColor;
        private final Color mediumTrafficColor;
        private final Color lowTrafficColor;
    
        public static class Builder {
            // Required parameters
            private final Point origin;
            private final Point destination;
    
            // Optional parameters - initialize with default values
            private Color waterColor         = Color.BLUE;
            private Color landColor          = new Color(30, 30, 30);
            private Color highTrafficColor   = Color.RED;
            private Color mediumTrafficColor = Color.YELLOW;
            private Color lowTrafficColor    = Color.GREEN;
    
            public Builder(Point origin, Point destination) {
                this.origin      = origin;
                this.destination = destination;
            }
    
            public Builder waterColor(Color color) {
                waterColor = color;
                return this;
            }
    
            public Builder landColor(Color color) {
                landColor = color;
                return this;
            }
    
            public Builder highTrafficColor(Color color) {
                highTrafficColor = color;
                return this;
            }
    
            public Builder mediumTrafficColor(Color color) {
                mediumTrafficColor = color;
                return this;
            }
    
            public Builder lowTrafficColor(Color color) {
                lowTrafficColor = color;
                return this;
            }
    
            public StreetMap build() {
                return new StreetMap(this);
            }
    
        }
    
        private StreetMap(Builder builder) {
            // Required parameters
            origin      = builder.origin;
            destination = builder.destination;
    
            // Optional parameters
            waterColor         = builder.waterColor;
            landColor          = builder.landColor;
            highTrafficColor   = builder.highTrafficColor;
            mediumTrafficColor = builder.mediumTrafficColor;
            lowTrafficColor    = builder.lowTrafficColor;
        }
    
        public static void main(String args[]) {
            StreetMap map = new StreetMap.Builder(new Point(50, 50), new Point(100,
                    100)).landColor(Color.GRAY).waterColor(Color.BLUE.brighter())
                    .build();
        }
    }
    

    【讨论】:

    • 您能详细说明一下吗?我是 Java 新手
    • @YasithJayawardana 好吧,附加的链接有一个 Java 示例。等等,我贴在这里
    • 是的,我明白了!非常感谢!
    猜你喜欢
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 2015-02-18
    • 2021-11-23
    相关资源
    最近更新 更多