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.