javaのHashMapの値としてクラスのオブジェクトを作成しようとしています。以下は私のJavaコードですJavaでHashMapを使用したオブジェクト作成
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];
}
}
私はそのオブジェクトにアクセスするとnullを返します。つまり、nullポインタ例外をスローします。
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
}
}
誰でもなぜこれが起こっているを理解するために私を助けてください:
は、私は以下のようにそのオブジェクトにアクセスするためにしようとしていますか?
私は初心者ですが、このアプローチのパフォーマンスを改善しようとしています。もしあれば、より良いアプローチを提案してください。
"key"は、初期化されずに2回使用されます。 –
あなたの "鍵"をインスタンス化したと仮定すると、おそらく何かがあなたのif条件の入力を妨げているでしょう。あなたのハッシュマップに本当にケットが入っていることを確認してください。 –