是否可以将图中的节点条件设置为限制值? 例如,我想指定如果一个节点是平均值,它的值不能超过20,如何在Java中做?非常感谢。
答案 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
不存在的不变量(差不多,为了完整性你也想在反序列化之后验证)。