Java hashmap static не допускает другого класса - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь добавить данные hashmap из одного класса в другой класс.Я видел, что для того, чтобы глобальная переменная использовала статический финал, однако мое затмение показывает ошибку Illegal modifier for parameter hashMapColorAndPets;, разрешается только финал, тогда он говорит об удалении недопустимых модификаторов.Что я должен делать?

public class PetFavoriteColor {

    public static void main(String[] args) {

static final HashMap<Color, HashSet<Pet>> hashMapColorAndPets = new HashMap<Color, HashSet<Pet>>();

}
public static HashMap<Color, HashSet<Pet>> getHashMap() {
        return hashMapColorAndPets;
    }
}


public class JavaFX extends Application {

    @Override
    public void start(Stage stage) throws Exception {

 PetFavoriteColor petFav = new PetFavoriteColor();
        petFav.gethashMap();
}
public static void main(String[] args) {
        Application.launch(args);
    }
}

1 Ответ

0 голосов
/ 07 апреля 2019

Вам нужно объявить hashMapColorAndPets на уровне класса, вне каких-либо методов. В противном случае он не существует вне метода.

Если вы хотите, чтобы один hashMapColorAndPets совместно использовался для всех PetFavoriteColor экземпляров, вы должны сделать его статическим:

public class PetFavoriteColor {
    // Gets created only once ever
    private static final HashMap<Color, HashSet<Pet>> hashMapColorAndPets
       = new HashMap<Color, HashSet<Pet>>();

    // Can be accessed using PetFavoriteColor.getHashMap()
    public static HashMap<Color, HashSet<Pet>> getHashMap() {
        return hashMapColorAndPets;
    }
}

Если вы хотите иметь отдельную хэш-карту для каждого экземпляра, сделайте это без статического:

public class PetFavoriteColor {
    // Gets newly created with every PetFavoriteColor
    private final HashMap<Color, HashSet<Pet>> hashMapColorAndPets
       = new HashMap<Color, HashSet<Pet>>();

    // Can be accessed like:
    //   PetFavoriteColor petFav = new PetFavoriteColor();
    //   petFav.getHashMap();
    public HashMap<Color, HashSet<Pet>> getHashMap() {
        return hashMapColorAndPets;
    }
}

Метод main() в PetFavoriteColor будет запускаться только в качестве точки входа для программы, поэтому он ничего не делает - у вас уже есть точка входа в классе JavaFX.

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