)
我正在写我的硕士论文,我已经使用了JESS平台。我想问一个问题。
例如,我有一个名为“Main”的Java类:
public class Main {
private String user = "Joe";
public String getUser(){ return user; }
public String setUser(String user){ this.user = user;}
public static void main( String[] args ) throws Exception {
Main main = new Main();
Rete rete = new Rete();
rete.store( "main", main );
rete.batch( "two.clp" );
}
}
现在我想调用clp文件并操作Main-Class-Object并执行此操作:
(printout t "main.user = " ((fetch main) getUser) crlf) ;; I got for this Joe
((fetch main) setUser "Robin")
(printout t "main.user = " ((fetch main) getUser) crlf) ;; For this I got Robin
但是现在我想问你如何从Java代码中调用这个名为“Robin”的被操作用户?如果我这样用Java调用:
public static void main( String[] args ) throws Exception {
Main main = new Main();
Rete rete = new Rete();
rete.store( "main", main );
rete.batch( "two.clp" );
System.out.println(main.getUser());
}
我的结果是“乔”而不是“罗宾”。 您能否告诉我如何获取(或调用)Javaobject的操作版本?为什么我在操作时不会操纵我的Java类 从Jess到Robin的用户名?
我将感谢你的留言。感谢。
答案 0 :(得分:0)
我添加了我使用的类和clp.file:
java class:
package Versuch;
import jess.*;
public class Auto {
private String marke = "";
private int ps = 0;
public Auto(String marke, int ps){
this.marke = marke;
this.ps = ps;
}
public String getMarke() {
return marke;
}
public void setMarke(String marke) {
this.marke = marke;
}
public int getPs() {
return ps;
}
public void setPs(int ps) {
this.ps = ps;
}
public static void main(String[] args) {
String getAktuell = "";
Auto vw = new Auto("VW", 90);
getAktuell = vw.getMarke();
System.out.println(" before manipulating " + getAktuell );
Rete engine = new Rete();
engine.store("vw", vw);
try {
engine.batch("Versuch/rulebase.clp");
System.out.println(" after manipulating " + getAktuell);
} catch (JessException e) {
System.out.println("JESS ERROR");
e.printStackTrace();
}
}
}
clp.file:
(printout t "vw.getMarke = " ((fetch vw) getMarke) crlf)
((fetch vw) setMarke "Mercedes")
(printout t "vw.getMarke = " ((fetch vw) getMarke) crlf)
输出:
before manipulating VW
vw.getMarke = VW
vw.getMarke = Mercedes
after manipulating VW
第一个输出和最后一个输出是来自java类的system.out.println调用。第二个和第三个输出是来自clp.file的打印输出调用。 任何人都明白为什么最后一次通话不是被操纵的? 对不起我对这个问题很新。 我将非常感谢您的帮助。