我在JADE中遇到了对象类型的问题。为了将对象消息发送到另一个代理,我使用方法ACLMessage.setContentObject。但是,当我想从收到的消息中提取特定的值/字段时,就会出现问题。
另外在发送代理中,我创建了类,以便可以发送带有对象内容的消息:
class BusData implements java.io.Serializable
{
public Double current;
public Double power1;
public Double power2;
public Double voltage;
}
接收代理有以下代码(部分):
data = MessageTemplate.MatchConversationId("measure");
ACLMessage data1 = receive(data); //receiving data with defined template
if (data1!=null) {
for (int i = 0; i < Agents.length; ++i) {
try {
Data1 received_data = (Data1)data1.getContentObject();
} catch (UnreadableException e) {
e.printStackTrace();}
//Serializable so = (Serializable)data1;
//System.out.println(Agents[i].getName()); //from whom received
if (data1!=null) {
System.out.println(getLocalName()+ " Info from " + data1.getSender().getName()); //from whom received
}
}
}
我应该在接收代理中添加类似的类,例如BusData1与类似的变量一样,在发送代理时才能提取消息内容?我是Java的新手,所以我要求理解。
每个提示都会有所帮助。 此致