gpt4 book ai didi

java - Jade 内容管理器在提取消息内容时调用默认构造函数

转载 作者:行者123 更新时间:2023-12-01 19:46:28 26 4
gpt4 key购买 nike

我正在两个代理之间发送一条消息,其中包含我的本体中的概念。 Concept 对象被封装在一个 Action 中,并像这样编码:

SendAction sendObject = new SendAction ("action info", conceptObject);

Action action = new Action();
action.setAction(sendObject);
action.setActor(getAID());

getContentManager().fillContent(message, action);

但是,在接收代理中解码消息内容后,如下所示:

ContentElement content = getContentManager().extractContent(message);

调用概念对象的默认构造函数,因此提取包含空概念对象的“SendAction”,而不是我编码的对象。

有趣的是,“发送操作”本身被正确编码和解码,因为“操作信息”字符串仍然存在。只有conceptObject是默认的。

为什么会发生这种情况?我该如何预防?

最佳答案

我已经解决了这个问题,所以我想为 future 的用户回答这个问题,特别是因为网上没有太多关于这个主题的信息。

在本例中,存在两个问题:

首先,在本体的“conceptObject”中使用 HashMap。显然Jade 的内容管理器不能很好地处理 HashMap 的序列化。我只是根据我自己、我的教授和同学的综合经验才知道这一点。

其次,我的“conceptObject”上的 setter 被设置为私有(private)。我当时并不知道,Jade 的内容管理器需要公共(public) setter 才能处理内容对象的序列化和反序列化。

注意:它还需要一个默认构造函数。

关于java - Jade 内容管理器在提取消息内容时调用默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59120404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com