У меня есть два класса, класс Place и класс Game.Это не отношения наследования, но я хочу, чтобы у моего класса Game была древовидная карта Place, а у класса Place - древовидная карта, но я хочу, чтобы обе древовидные карты были одним и тем же, чтобы мне не приходилось постоянно обновлять оба.
Другая проблема, которая возникла, была связана с природой того, что мне нужно делать, всякий раз, когда я создаю объект place в конструкторе, мне нужно немедленно помещать объект в древовидную карту с помощью place.put (id,это), и проблема в том, что конструктор требует, чтобы я инициализировал свою древовидную карту, но если я инициализирую ее каждый раз, когда вызывается конструктор, очевидно, я буду получать новые карты каждый раз.
Короче говоря, мне нужен способ, чтобы два класса совместно использовали одну и ту же статическую древовидную карту и 2. просто инициализировали ее один раз, чтобы я не переинициализировал ее.Я думал сделать что-то напуганное, например, иметь логический элемент данных isSet, но я не хочу идти по этому пути.
public Place(Scanner fileInput, Report rep) {
// this constructor will only read enough information for one
// place object and stop on the line for which place it read
name = "";
description = "";
// report object contains fields to initialize to help
// validate the data. // see report class
int idNumber;
int linesToRead; // number of lines to read for one place object
while ( (fileInput.hasNextLine() ) && rep.placeInfoFound() == false ) {
//1. Call getline. getline has a while loop that will continue
// until it reaches a line of data worth reading
// first data we expect is the places line
// after that, we will be on the 'PLACES line which will have
// two fields, both place and id.
//2 call ListToTokens which will make an arraylist of words
// where each element is a token. token sub 1 is the number of
// places.
ArrayList<String> tokens = new ArrayList<String>();
tokens = findPlaceInfo(fileInput, rep);
}
places = new TreeMap<Integer, Place>();
places.put(id, this);
//WE HAVE TO REINITIALIZE the fact that we found
// place info back to false so that when we call again
// we can run the while loop
rep.assert_place_info_found(false);
} // function brace
private static TreeMap<Integer, Place>places;