我有班级规则和班级事实
public class Rule {
private Fact first;
private String operator;
private Fact second;
private String operator2;
private Fact result;
public boolean fired;
...
}
public class Fact {
private String name;
private int state;
private boolean canBeModified;
...
}
我根据文件中的内容创建规则,但有两种方法:
a && b => c
或b => a
(=>
此处并不含义,只是结果)
在第二种情况下,当我缺少第二个事实(b=>a
)时,我再次使用b
并将其设为b && b => a
,此处我想将b
的值分配给{ {1}}以便a
依赖a
,稍后当b
发生变化时,b.state
的变化完全相同。 canBeModified也是如此。只有变量名称应该不同,每个事实都是常量。
如何实现?
答案 0 :(得分:0)
您可以b
指向a
。
例如:
Fact a = new Fact();
Fact b = a;
现在,当b
发生变化时,a
也会发生变化,当a
发生变化时,b
也会发生变化。
答案 1 :(得分:0)
你可以创建一个新的state类和canBeModified,让a和b共享该类的Object:
public class Fact {
private String name;
private FactValues values;
public class FactValues {
private int state;
private boolean canBeModified;
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public boolean isCanBeModified() {
return canBeModified;
}
public void setCanBeModified(boolean canBeModified) {
this.canBeModified = canBeModified;
}
}
public Fact(String name, FactValues values) {
super();
this.name = name;
this.values = values;
}
public Fact(String name, int state, boolean canBeModified) {
super();
this.name = name;
this.values = new FactValues();
values.setState(state);
values.setCanBeModified(canBeModified);
}
public FactValues getValues() {
return values;
}
public void setValues(FactValues values) {
this.values = values;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getState() {
return values.getState();
}
public void setState(int state) {
values.setState(state);
}
public boolean isCanBeModified() {
return values.isCanBeModified();
}
public void setCanBeModified(boolean canBeModified) {
values.setCanBeModified(canBeModified);
}
public static void main(String[] args) {
Fact b = new Fact("test", 1,true);
Fact a = new Fact("another test",b.getValues());
a.setState(5);
System.out.println(a.getState());
System.out.println(b.getState());
}
}