Problem:MIDP: Array-Zugriff->NullPointerException



  • Die einfachen AnfängerFehler scheiden aus!

    ich hab ein Array definiert.
    Dieses Array initiiert.
    Die Array-Slots sind mit null initiert.
    Dann habe ich meine Runnable-Objekte in Threads gepackt und in das Array referenziert.

    Thread THREAD[];
    THREAD = new THREAD[12];
    for (int i=0;i<THREAD.length;i++) {THREAD[i]=null;} //klappt!
    
    THREAD[0]=new Thread ((Runnable) myThread1); //klappt!
    ...
    

    Soweit zufriedenstellend, doch jetzt beginnen die Probleme:
    Die frisch erstellten Threads sind irgendwie DEFEKT!
    Sobald ich auf das Array zugreife, erhalte ich eine NullPointerException!

    THREAD.length => NullPointerException!
    THREAD[i] => NullPointerException!
    

    Ich versuche mit MIDP die Dinge etwas anders laufen zu lassen als vorgesehen.
    Konkret: Ich versuche Threads zu erstellen BEVOR myMIDlet.startApp() aufgerufen wurde.

    Das die Thread-Objekte selber zerstört werden kann ich mir vorstellen,
    aber wieso geht das Thread-Array kaputt? Wegen ungültiger Referenzen in den Slots?

    Ich finde dieses Verhalten Rätselhaft! Kann mir da jemand einen Tip geben? Was passiert hier?



  • was passiert den zwischen den zwei codeteilen? kann es sein, dass du ein ganz anderes array initialisierst (in anderer methode)? :xmas1:



  • na schrieb:

    was passiert den zwischen den zwei codeteilen? kann es sein, dass du ein ganz anderes array initialisierst (in anderer methode)? :xmas1:

    public void startThreads() {
    	try {if (THREAD==null){setThreads();D("setting THREAD!");}} catch (NullPointerException e) {D("E_NULL");}
    	if (THREAD!=null) {DD("THREAD is NOT NULL!");}
    	DD("loop starts");//here we go..
    	for (int t=0; t<12; t++) {DD("point of no return");if (THREAD[t]==null) {/*already dead*/D("Slot "+t+": NULL");} else if (false) {DD("DISABLED?!?");THREAD[t].start();}}
    	DD("loop exited");
    	;}
    


  • Was soll das jetzt sein? Alles aus einer Klasse? Poste doch mal soviel Code, dass man sieht was passiert.


Anmelden zum Antworten