Доступ к элементам связанного списка, который состоит из частного пользовательского класса

В проекте я пытаюсь заставить двух или более агентов общаться друг с другом, чтобы собирать вещи в окружающей среде. Для этого я использую почтовый ящик, содержащий сообщения, на которые они будут отвечать, в зависимости от сообщений, отправляемых между собой. ниже, где я создаю связанный список

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;
    } 

}

Я не могу на всю жизнь выяснить, как получить доступ к методам внутри частного класса, чтобы я мог ставить цели и видеть сообщения между агентами. Любая помощь или указатели в правильном направлении будет принята с благодарностью, я надеюсь, что я включил достаточно информации, если нет, пожалуйста, дайте мне знать, что еще нужно

я не объяснил себя ясно, так как часто сталкиваюсь с проблемами, но да, и частные классы, и первый фрагмент кода находятся внутри открытого класса

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;
        } 

    }
}
Другие вопросы по тегам