Java: Статический доступ с использованием строки? - PullRequest
1 голос
/ 27 июля 2011

Не слишком уверен в названии для, но у меня есть файл, который используется для получения определенных координат текстуры. Файл называется Assets и содержит только несколько элементов, например, что показано ниже ...

public static TextureRegion level1;

Чтобы получить доступ к этому, я просто использую Assets.level1 для другой части программы, вот и все.

Мне интересно, есть ли способ сделать это через строку, например, вместо Assets.level2 я мог бы сделать что-то вроде Assets. (Строка) где string = "level2"

Любая помощь будет отличной

Ответы [ 3 ]

4 голосов
/ 27 июля 2011

Вместо того, чтобы использовать их в качестве статических полей в классе Assets, вы должны добавить статический метод к Assets:

public static TextureRegion getTextureRegion(String name)
{
    // get it somehow
}

Теперь для части "как-то": самый простой (и самый гибкий) способ - это иметь Map<String, TextureRegion> (Map - это интерфейс, HashMap, вероятно, будет достаточно в этом случае) в вашем Assets класс, который содержит области текстуры. Как вы помещаете данные в эту карту, зависит от вас. Например:

regions.put("level1", your_level_1_region);

Тогда ваш getTextureRegion становится:

public static TextureRegion getTextureRegion(String name)
{
    return regions.get(name);
}

Преимущество этого состоит в том, что эти регионы могут быть определены во время выполнения (возможно, загружены из файла) вместо жесткого кодирования.

2 голосов
/ 27 июля 2011

(TextureRegion)Assets.class.getField("level2").get(null)

0 голосов
/ 27 июля 2011

Вы можете получить доступ к статическим полям класса на основе переменной с помощью Java Reflection API.

TextureRegion lvl = (TextureRegion) Assets.class.getDeclaredField("level1").get(null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...