Я пытаюсь создать объект класса как значение HashMap в java. Ниже мой Java-код:Создание объекта с помощью HashMap в java
public interface Message {
public String nextMessage(String data);
}
public class DataMessage implements Message{
private static String[] randomData;
public DataMessage(String data) {
randomData = data.split(",");
}
@Override
public String nextMessage(String data) {
int index = randomIndex.nextInt(randomData.length-1);
return randomData[index];
}
}
Когда я доступ к этому объекту он возвращается нуль, т.е. бросать исключения нулевого указателя.
Я пытаюсь получить доступ к этому объекту, как показано ниже:
public class MyMessage {
public MyMessage() {
}
public static void main() {
HashMap<String,Message> hash = new HashMap<String,Message>();
if (some condition) {
hash.put(key,new DataMessage("this is my data"));
}
<some code>
hash.get(key).nextMessage();
//Throws nullpointer exception
}
}
Может кто-нибудь пожалуйста, помогите мне понять, почему это происходит?
Я начинаю работать в Java и стараюсь улучшить производительность этого подхода. Пожалуйста, предложите лучшие подходы, если таковые имеются.
«ключ» используется дважды, без инициализации. –
Предполагая, что вы создали экземпляр своего «ключа», возможно, что-то удерживает вас от ввода вашего условия if. Убедитесь, что ket действительно находится в вашем hashmap. –