Доступ к элементам связанного списка, который состоит из частного пользовательского класса
В проекте я пытаюсь заставить двух или более агентов общаться друг с другом, чтобы собирать вещи в окружающей среде. Для этого я использую почтовый ящик, содержащий сообщения, на которые они будут отвечать, в зависимости от сообщений, отправляемых между собой. ниже, где я создаю связанный список
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 ответ
- В одном файле может быть только один открытый класс.
- Имя имени файла (имя программы) должно совпадать с именем общедоступного класса.
- Внутри вашего публичного класса может быть несколько закрытых классов в качестве внутренних классов.
Пример кода ниже (немного изменил ваши классы, потому что они дают ошибку компиляции):
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;
}
}
}