-4

是否可以在图中为节点设置条件,例如限制值?例如我想指定如果一个节点是平均的,它的值不能超过 20,如何在 Java 中做?多谢。

4

1 回答 1

2

您提供的细节很少,因此我将尝试猜测您要做什么。

限制任何对象中字段值的一种简单而简单的方法是确保所有字段只能通过 getter 和 setter 访问,并让 setter 执行任何验证或调整。例如,如果您想抛出异常并在值超出范围时失败(替换为您想要的任何异常类型):

public class GraphNode {
    ...
    private float value;

    public float getValue () {
        return value;
    }

    public void setValue (float value) throws Exception {
        if (value > 20.0f)
            throw new Exception("Value must be <= 20.");
        this.value = value;
    }

}

或者,如果您只想默默地钳制该值:

public class GraphNode {
    ...
    private float value;

    public float getValue () {
        return value;
    }

    public void setValue (float value) {
        this.value = (value > 20.0f) ? 20.0f : value;
    }

}

然后当您更改值时:

GraphNode node = ...; 
node.setValue(someValue);

中的逻辑setValue将确保 aGraphNode的值始终在定义的约束范围内。

如有必要,您还可以在构造函数中重用此逻辑,例如对于引发异常的第一个示例:

public class GraphNode {
    ...

    public GraphNode (float value) throws Exception {
        setValue(value); // throws if out of range
    }

}

这样,您的验证逻辑都在一个地方,并且您可以设置不GraphNode存在违反约束的不变量(几乎,为了完整性,您也希望在反序列化后验证)。

于 2013-08-13T19:57:04.003 回答