SimpleStringProperty set() vs. setValue()

后端 未结 2 1696
名媛妹妹
名媛妹妹 2021-02-07 04:01

What is the difference between set(String) and setValue(String) in the SimpleStringProperty class?

I know that set(String) is der

相关标签:
2条回答
  • 2021-02-07 04:39

    StringProperty.java :

    @Override
    public void setValue(String v) {
        set(v);
    }
    

    StringPropertyBase.java:

    @Override
    public void set(String newValue) {
        if (isBound()) {
            throw new java.lang.RuntimeException("A bound value cannot be set.");
        }
        if ((value == null)? newValue != null : !value.equals(newValue)) {
            value = newValue;
            markInvalid();
        }
    }
    

    In common case, you can open sources from open javafx and see that.

    0 讨论(0)
  • 2021-02-07 04:45

    set/setValue and get/getValue methods pairs exist to align Object properties with primitive types properties like BooleanProperty or DoubleProperty:

    BooleanProperty:

    void set(boolean value)
    void setValue(java.lang.Boolean v)
    

    DoubleProperty:

    void set(double value)
    void setValue(java.lang.Number v)
    

    In these property classes ___Value methods work with corresponding to type objects while direct methods work with primitive types.

    Looking in the code you may find a bit of a difference in the logic. For example, DoubleProperty#setValue(null) is equal to DoubleProperty#set(0.0) (which was required by binding). So generally I'd advise to use set/get methods and leave setValue/getValue to binding needs as they may incorporate additional logic.

    For Object/String properties there is no difference between set and setValue methods.

    0 讨论(0)
提交回复
热议问题