2016-06-03 3 views
1

두 옥의 에이전트가 있는데 하나의 에이전트에서 다른 에이전트로 개체를 보내고 싶습니다. setContentObject()getContentObject() 메서드를 사용하여 두 번째 에이전트가 개체를 수신 할 수는 있지만 잘되지 않았습니다. 예를 들어, 객체의 변수를 얻을 수있는 방법을 찾을 :
에이전트간에 개체 보내기

public class Person implements Serializable{ 
    private String firstName; 
    private String lastName; 
    public String getFirstName(){ 
    return firstName; 
    } 
    public void setFirstName(String fName){ 
    this.firstName=fName; 
    } 
    public String getLastName(){ 
    return lastName; 
    } 
    public void setFirstName(String lName){ 
    this.lastName=lName; 
    } 
} 

Agent1을 :

,536

public class Agent1 extends Agent{ 
    @Override 
    protected void setup() { 
     addBehaviour(new OneShotBehaviour(this) { 
      @Override 
      public void action(){ 
      ACLMessage aclmsg = new ACLMessage(ACLMessage.REQUEST); 
      aclmsg.addReceiver(new AID("Agent2", AID.ISLOCALNAME)); 
      aclmsg.setContentObject(Person); 
      send(aclmsg); 
      }); 
     } 
    } 
} 

Agent2을

public class Agent2 extends Agent{ 
     @Override 
     protected void setup() { 
      addBehaviour(new CyclicBehaviour(this) { 
      @Override 
      public void action(){ 
      ACLMessage msg = receive(); 
      if(msg!=null){ 
       //Here i want to get the first name of the object Person 
      }    
      }); 

      } 
     } 
} 

그래서 내 질문은 보낸 사람 Person의 firstName을 검색 할 수 있습니까?

답변

3
((Person)msg.getContentObject()).getFirstName() 

당신이 객체에 ACL 메시지를 변환 할 수 없습니다 this

+0

읽기 – Pain

관련 문제