首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较jess中的java对象

如何比较jess中的java对象
EN

Stack Overflow用户
提问于 2014-10-02 02:45:05
回答 1查看 291关注 0票数 1

当我将java对象作为java类中的属性进行比较时,我遇到了一个问题。

这是我的clp文件

代码语言:javascript
复制
(import Model.*)

(deftemplate PizzaBase    
    (declare (from-class PizzaBase)  
             (include-variables TRUE)))  

(deftemplate PizzaTopping   
    (declare (from-class PizzaTopping)  
             (include-variables TRUE)))  

(deftemplate Pizza   
    (declare (from-class Pizza)  
             (include-variables TRUE)))  

(defrule make-pizza
        ?pizzaBase1 <-(PizzaBase{size == 9})
        (Pizza(pizzaBase ?pizzaBase1))  
        =>  
         (add (new PizzaBase "New DeepPan" 10))  
         )  

根据我的规则,我想要创建一个新的pizzaBase.When --比萨相等的pizzaBase对象(size= 9),但是JESS并不是为我创建一个新的事实。根据我的想法,我认为JESS无法比较从class.Therefore创建的Java对象,JESS中没有添加任何事实。

所以,“如何解决这个问题?”,因为我看了JESS网站的手册,但没有任何标题,根据我的问题。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-02 06:57:36

您可能忽略了5.3.2节,即将Java对象添加到工作内存中。

Java对象与事实不一样,即使在派生阴影(!)时也是如此。POJO中的事实,使用from-class和include-变量。事实包含了通过在保留槽名(add ?aNewObject)中调用OBJECT插入的Java对象的引用。

像这样改变你的规则:

代码语言:javascript
复制
 (defrule make-pizza
    (PizzaBase{size == 9}(OBJECT ?pizzaBase1))
    (Pizza(pizzaBase ?pizzaBase1))  
    =>  
     (add (new PizzaBase "New DeepPan" 10))  
     )  
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26153781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档