如何为图节点添加条件

时间:2013-08-13 19:50:17

标签: java graph

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

1 个答案:

答案 0 :(得分: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中的逻辑将确保GraphNode的值始终在定义的约束范围内。

如果需要,您也可以在构造函数中重用此逻辑,例如对于抛出异常的第一个示例:

public class GraphNode {
    ...

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

}

这样你的验证逻辑就在一个地方,并且你可以设置不存在违反你的约束的GraphNode不存在的不变量(差不多,为了完整性你也想在反序列化之后验证)。