nullpointer exception - arrayerstellung

forreason

Mitglied
hallo community,
ich werde und werde nicht schlauer. mein programm schreitet foran, im moment bin ich an einer speicherschnittstelle.
das speichern klappt schon wunderbar. das laden funktioniert soweit auch. Allerdings zerhaut mir eine zeile meinen completten array! ich kann mir nicht erklären, warum.

Betreffende zeile:
Java:
System.out.println("key = " + key[0]);
            returnvariables = conf.getConf(loadshipcombobox.getSelectedItem().toString(), key);        // get the wars into the txtfields so the user can see them
            System.out.println("key = " + key[0]);

Consolenausgabe:
Java:
key = Jumpdistance_unladen
key =

die folge ist, dass ich später eine nullpointer exeption bekomme, wenn ich den Array wieder benötige
 
Zuletzt bearbeitet:
ich fand nun heraus, dass die zeile nicht nur "key" leert sondern ALLE anderen variablen auch! also was tun?
genau genommen folgender code:
Java:
conf.getConf(test, key)

er verweist auf eine andere Java klasse
 
Zuletzt bearbeitet:
hier der code:
habe mir nun ein behilfsarray gebaut, in das das array vor der übergabe kopiert wird. aber das ist ja nun nicht die lösung..

Java:
public String[] getConf(String filename, String key[]) throws IOException
   {  
    Properties prop = new Properties();
        FileInputStream fis = null;
        String[] value = key;
        
        
        try{
            // 1. Einstellungen aus einfacher Datei laden
            fis = new FileInputStream(filename);
            prop.load(fis);
            for (int i = 0; i < key.length; i++) {
                value[i] = prop.getProperty(key[i]);
            }
            
        }
        catch (IOException ex){
            ex.printStackTrace();
        }
        finally{
            if (fis != null) fis.close();
        }
        return value;
   }

PS: habe gerade was gesehen, das array "key" brauche ich gar nicht in "value" ziehen oder?
 
Zuletzt bearbeitet:
habe mir nun ein behilfsarray gebaut, in das das array vor der übergabe kopiert wird. aber das ist ja nun nicht die lösung..[/code]
Doch, ist es im Prinzip, wobei du ein neues Array anlegen solltest, was so lang ist die das ursprüngliche. Dein Code kopiert nämlich nix, sondern erzeugt lediglich eine neue Variable die auf dasselbe Array zeigt. Alle Änderungen, die du an String[] value machst, werden auch an String[] key durchgeführt, da beide Variablennamen exakt dasselbe Objekt referenzieren.
So wie du es programmiert hast, enthält deshalb das übergebene Array nach dem Durchlaufen der conf-methode definitv nicht mehr die ursprünglichen keys, sondern die values zu den keys bzw. wenn für den key kein value gefunden wurde, null. Und ob für die keys in der Properties Datei values vorhanden sind, kann nur beurteilt werden, wenn der Inhalt der Properties Datei bekannt ist. Das ist nicht der Fall.
Anstatt die keys in dem ursprünglichen Array mit den values (oder null) zu überschreiben, könnest du auch einfach eine HashMap<String, String> zurückgeben.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben