Hashtable mit eigenen Konstruktor

Ketzler

Mitglied
Hallo,
ich habe versucht folgende Hashtable so wie mir bereits hier im Forum beschrieben zu initialisieren, doch es kommt eine Nullpointer Exception raus. Beim Debuggen meine ich herausgefunden zu haben , dass die Hashtable zwar angelegt wurde, doch keinen Inhalt aufweist. Was ist in dem Fall anders?

Vielen Dank im Voraus.


Die Hashtable:
Java:
import java.util.Hashtable;

public class HashTitelVer {

	
	
	//
	static Hashtable<Integer,Titel> htable = new Hashtable<Integer,Titel>();

	static {
		htable.put(1,  new Titel("NName","BBeschreibung",3 , "BBild"));
		htable.put(2,  new Titel("NName","BBeschreibung",3 , "BBild"));
		htable.put(3,  new Titel("NName","BBeschreibung",3 , "BBild"));
		htable.put(4,  new Titel("NName","BBeschreibung",3 , "BBild"));
		htable.put(5,  new Titel("NName","BBeschreibung",3 , "BBild"));
		htable.put(6,  new Titel("NName","BBeschreibung",3 , "BBild"));
		htable.put(7,  new Titel("NName","BBeschreibung",3 , "BBild"));
		htable.put(8,  new Titel("NName","BBeschreibung",3 , "BBild"));
		htable.put(9,  new Titel("NName","BBeschreibung",3 , "BBild"));
		htable.put(10,  new Titel("NName","BBeschreibung",3 , "BBild"));
		
    }
	
		public static String HashgetName(Hashtable<Integer,Titel> table) {
		Titel zwTitel = table.get(1);
		String name = zwTitel.getName();
		return name;
	}
}

Der Titel:
Java:
public class Titel {

	/**
	 * @param args
	 */
	public String Name;
	public String Beschreibung;
	public Float Preis;
	public String Bild;
	
	
	public Titel(String NName,String BBeschreibung,float i, String BBild){
		this.Name = NName;
		this.Beschreibung = BBeschreibung;
		this.Preis = i;
		this.Bild = BBild;
	}
	
	String getName() {
		return Name;
	
	}
}

Die Main:
Java:
import java.util.Hashtable;


public class lesen {

	static Hashtable<Integer,Titel> htable;

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		htable = new Hashtable<Integer, Titel>();
		System.out.println(HashTitelVer.HashgetName(htable));
		System.out.println(new Titel("ff", "ffff", 0, "ffffff").getName());
	}
}
 
Die Hashtable HashTitelVer.htable ist initialisiert und befüllt. Mit dieser Hashtable machst du aber gar nix. Stattdessen legst du in deiner lesen-Klasse bzw. in deren main-Methode eine weitere Hashtable-Instanz an, die keine Elemnte enthölt, und verwendest diese leere Hashtable als Argument beim Aufruf der HashTitelVer.HashgetName() Methode.
Die beiden Hashtable Instanzen haben zwar den gleichen Variablennamen (htable), sind aber trotzdem verschiedene Objekte. Das eine ist ein statisches bzw. Klassenfeld der HashTitelVer-Klasse, das andere der lesen-Klasse.
 
Zuletzt bearbeitet:
super danke!
Mit der hats funktioniert!
Vielen Dank.
Java:
import java.util.Hashtable;


public class lesen {
	
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub

		System.out.println(HashTitelVer.HashgetName(HashTitelVer.htable));
		System.out.println(new Titel("ff", "ffff", 0, "ffffff").getName());
	}
}
 

Zurück
Oben