0

在一个项目中,我试图让两个或多个代理相互通信以收集环境中的东西。为此,我正在使用一个邮箱,其中包含他们将根据彼此之间发送的消息进行响应的消息。下面是我创建链接列表的地方

mailbox = new LinkedList[numberOfAgents()];
    for ( int i=0; i< numberOfAgents(); i++ ){ 
        mailbox[i] = new LinkedList<Message>();
        mailbox[i].add(new Message(i, knownBloodBanks, knownDonors));
}

然后是私信和意向类

private class Message 
{ 
    // instance variables 
    private int senderId;  
    private BoardComponentList donors; 
    private BoardComponentList bloodBanks; 
    private BoardComponent requestAssistanceAt; 
    private Intention iIntendToAssistAt; 

    public Message( int senderId, BoardComponentList d, BoardComponentList b ) 
    { 
        this.senderId = senderId;  
        donors = d; 
        bloodBanks = b; 
    } // end constructor 

    public void setIntentions( Intention intention ) 
    { 
        iIntendToAssistAt = intention; 
    } 

    public void setRequest( BoardComponent bC ) 
    { 
        requestAssistanceAt = bC; 
    } 

    public BoardComponentList getDonors() 
    { 
        return donors; 
    } 

    public BoardComponentList getBloodBanks() 
    { 
        return bloodBanks; 
    } 

    public Intention getIntentions() 
    { 
        return iIntendToAssistAt; 
    } 

    public BoardComponent getRequest() 
    { 
        return requestAssistanceAt; 
    } 

    public int getSenderId() 
    { 
        return senderId; 
    } 


} // end Message class 

private class Intention
{
    // instance variables 
    private BoardComponent target; 
    private double distanceTo; 

    public Intention( BoardComponent bC, double distance ) 
    { 
        target = bC; 
        distanceTo = distance; 
    } // end constructor 


    public BoardComponent getTarget() 
    { 
        return target; 
    } 

    public double getDistancetoTarget() 
    { 
        return distanceTo;
    } 

}

我一辈子都想不出如何访问私有类中的方法,以便我可以设定目标并查看代理之间的消息。任何正确方向的帮助或指示将不胜感激,我希望我已经包含了足够的信息,如果没有请让我知道其他需要的信息

我没有清楚地解释自己,因为我经常发现问题,但是私有类和第一个代码片段都在公共类中找到

4

1 回答 1

1
  1. 每个文件只能有一个公共类。
  2. 文件名(程序名)的名称应与公共类的名称相匹配。
  3. 公共类中可以有多个私有类作为内部类。

下面的示例代码(修改了你的类,因为我们给出了编译错误):

package com.pkg1;

import java.util.LinkedList;

public class Sample{


    public Sample(){
        LinkedList[]    mailbox = new LinkedList[10];
        for ( int i=0; i< 10; i++ ){ 
            mailbox[i] = new LinkedList<Message>();
            mailbox[i].add(new Message(i));
    }
    }
    private class Message 
    { 
        // instance variables 
        private int senderId;  

        private Intention iIntendToAssistAt; 

        public Message( int senderId ) 
        { 
            this.senderId = senderId;  

        } // end constructor 

        public void setIntentions( Intention intention ) 
        { 
            iIntendToAssistAt = intention; 
        } 



        public Intention getIntentions() 
        { 
            return iIntendToAssistAt; 
        } 


        public int getSenderId() 
        { 
            return senderId; 
        } 


    } // end Message class 

    private class Intention
    {
        // instance variables 

        private double distanceTo; 

        public Intention( double distance ) 
        { 
            distanceTo = distance; 
        } // end constructor 


        public double getDistancetoTarget() 
        { 
            return distanceTo;
        } 

    }
}
于 2014-05-20T04:44:39.767 回答