ClassCastException beim Casten in eine Klasse

Status
Nicht offen für weitere Antworten.

Stefan1200

Top Contributor
Folgendes: Ich habe einen Server, der jeden Client in einen Thread startet,
diese Threads gehören einer ThreadGroup (clientGroup) an. Wenn ich nun eine Nachricht
an alle Clients senden möchte, muss ich ja in jedem Thread eine Methode (send()) aufrufen.
Alle aktiven Client-Threads erhalte ich ja über die ThreadGroup. Soweit klappt alles super.
Laut dem Buch "Thinking in Java" kann man nun die Einträge in dem Thread Array in die
entsprechende Klasse casten, um dessen Methode aufzurufen.

Wenn ich das aber mache, erhalte ich eine java.lang.ClassCastException
bei folgendem Code:

Code:
	public void sendToAll(String msg)
	{
		try
		{
			Thread[] clientArray = new Thread[clientGroup.activeCount()];
			int clientCount = clientGroup.enumerate(clientArray);

			for (int i=0; i<clientCount; i++)
			{
				System.out.println("Send to " + ((BrowserClientThread)clientArray[i]).getName() + ": " + msg);
				((BrowserClientThread)clientArray[i]).send(msg);
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}

Die ClassCastException tritt auf in den jeweils folgenden beiden Zeilen:

Code:
				System.out.println("Send to " + ((BrowserClientThread)clientArray[i]).getName() + ": " + msg);
				((BrowserClientThread)clientArray[i]).send(msg);

Also beim Casten in die Klasse "BrowserClientThread".

Habt Ihr eine Idee? Ich bin wieder gerade am Verzweifeln :-(
 
S

stev.glasow

Gast
probier mal
Code:
...(Thread)clientArray....

casten von Elterklasse auf Kindklasse geht nicht nur von Kindklasse auf Elterklasse. ist klar wieso ?
 

Stefan1200

Top Contributor
stevg hat gesagt.:
probier mal
Code:
...(Thread)clientArray....

casten von Elterklasse auf Kindklasse geht nicht nur von Kindklasse auf Elterklasse. ist klar wieso ?

Die Klasse ist ja ein Thread. "...(Thread)clientArray...." klappt auch nicht. Oder ich bin zu blöd :-(
Aber wieso will ich von Elternklasse auf Kindklasse casten? Obwohl, es macht doch sinn. Willst du mir damit sagen, das es nicht geht, weil die Klasse "BrowserClientThread" vom Thread geerbt hat? Wenn ja, das wäre "shit", wie mache ich das dann? Grummel, manchmal ist coden so easy, und manchmal könnte ich Häuser eintreten...;-)

Hast du noch ein Tipp?
Aber schonmal danke für den Hinweis.
 

Ebenius

Top Contributor
stevg hat gesagt.:
casten von Elterklasse auf Kindklasse geht nicht nur von Kindklasse auf Elterklasse.
@stevg: Ganz und gar nicht! Ein type cast von Kind auf Eltern passiert implizit und muss nicht angewiesen werden. Ein type cast von Eltern auf Kind passiert nicht implizit, kann aber explizit angewiesen sein und auch funktionieren, abhängig von den Instanz-Typen.

Es grüßt Ebenius
 

Ebenius

Top Contributor
Stefan, die Doku meint, dass enumerate alle Threads dieser und aller Untergruppen in das Array wirft. Außerdem ist jeder Thread, der von einem der Clients abgesplittet wird automatisch in dieser ThreadGroup. Das heißt, Du musst definitiv prüfen, ob der Thread einer der richtigen ist!

Ansonsten mit dem Debugger durch. Dort erkennst Du ganz einfach, was das Problem ist.

Versuch's mal bitte so:
Code:
try
{
	Thread[] clientArray = new Thread[clientGroup.activeCount()];

	/* enumerate without sub group entries !!! */
	int clientCount = clientGroup.enumerate(clientArray, false);

	for (int i = 0; i < clientCount; i++)
	{
		Thread groupChild = clientArray[i];
		if(groupChild instanceof BrowserClientThread)
		{
			/* This is one of our clients */
			BrowserClientThread client = (BrowserClientThread)groupChild;
			System.out.println("Send to " + client.getName() + ": " + msg);
			client.send(msg);
		}
		else
		{
			/* All in all it's just a - nother thread in the group :) */
		}
	}
}
catch (Exception e)
{
	e.printStackTrace();
}

Es grüßt Ebenius
 
S

stev.glasow

Gast
stimmt eigendlich - normalerweise mache ich das auch so (wirklich)
 

Stefan1200

Top Contributor
Ebenius hat gesagt.:
Stefan, die Doku meint, dass enumerate alle Threads dieser und aller Untergruppen in das Array wirft. Außerdem ist jeder Thread, der von einem der Clients abgesplittet wird automatisch in dieser ThreadGroup. Das heißt, Du musst definitiv prüfen, ob der Thread einer der richtigen ist!

Theoretisch ist es zwar unmöglich, das in der Group irgendein anderer Thread drinn steckt, aber ich werde das mit instanceof heute abend mal testen.

Mit der list() Funktion habe ich mir ja schon die Threads in der Gruppe angeschaut, sind alles instanzen von BrowserClientThread.

Irgendwo anders steckt bestimmt noch der wurm drinn.
 

Stefan1200

Top Contributor
Ebenius hat gesagt.:
Stefan, die Doku meint, dass enumerate alle Threads dieser und aller Untergruppen in das Array wirft. Außerdem ist jeder Thread, der von einem der Clients abgesplittet wird automatisch in dieser ThreadGroup. Das heißt, Du musst definitiv prüfen, ob der Thread einer der richtigen ist!

Ich habe dein Source jetzt mal probiert, leider auch hier ClassCastException.
Ich verzweifle...

Das muss doch irgendwie möglich sein, von einem bestimmten Thread eine Methode der Klasse aufzurufen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L ClassCastException (JavaMail API) Allgemeine Java-Themen 3
P ClassCastException bei Verwendung eines Interfaces Allgemeine Java-Themen 7
G ClassCastException Allgemeine Java-Themen 17
A Vererbung Klassen-Downcasting wirft ClassCastException Allgemeine Java-Themen 2
S OOP ClassCastException bei casting von eigener Klasse aus Iterator Allgemeine Java-Themen 3
F Interpreter-Fehler ClassCastException wird bei Schleifenaufruf geworfen Allgemeine Java-Themen 8
T java.lang.ClassCastException: Allgemeine Java-Themen 4
C java.lang.ClassCastException Allgemeine Java-Themen 3
T java.lang.ClassCastException Allgemeine Java-Themen 7
SuperSeppel13 ClassCastException Allgemeine Java-Themen 6
W java.lang.ClassCastException Allgemeine Java-Themen 10
H setWrappedData -> classcastexception Allgemeine Java-Themen 2
G java.lang.ClassCastException Allgemeine Java-Themen 3
G Dubiose ClassCastException in typisierter Map Allgemeine Java-Themen 4
B ClassCastException Allgemeine Java-Themen 2
V ClassCastException bei ArrayList Allgemeine Java-Themen 5
R ClassCastException Allgemeine Java-Themen 14
S Problem mit generics -> ClassCastException und ka wieso Allgemeine Java-Themen 20
B ClassCastException Allgemeine Java-Themen 17
S classCastException Allgemeine Java-Themen 4
berserkerdq2 Weiß jemand wie ich im Scenebuilder das Fenster so darstellen kann, dass beim Vollbildmodus die Objekte so angezeigt werden? Allgemeine Java-Themen 1
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
A Zweite Service Klasse beim Kompilieren Allgemeine Java-Themen 6
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
B Stringmanipulationen beim Dateinamen Allgemeine Java-Themen 8
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
J Mein Frame friert ein beim Uploaden Allgemeine Java-Themen 4
P Selenium Scriipt zeigt Fehler beim Import Allgemeine Java-Themen 3
A Hilfe beim Verständnis Allgemeine Java-Themen 16
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
B Compiler-Fehler Probleme beim Kompilieren mit Jsoup Allgemeine Java-Themen 8
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
yakazuqi Fehler beim Laden. JDA (Java Discord API) Allgemeine Java-Themen 1
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
U Fehler beim Compillieren Allgemeine Java-Themen 13
B neuroph hält beim XOR lernen nicht an Allgemeine Java-Themen 13
bueseb84 Fehler beim Import von Maven Dependencies aus lokalem artifactory Allgemeine Java-Themen 2
J Jasper Report - seltame Meldung beim compilieren Allgemeine Java-Themen 3
J Linux .jar beim Start automatisch ausführen Allgemeine Java-Themen 6
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
L Compiler-Fehler Generics beim Anhängen von Predicates Allgemeine Java-Themen 1
J WARNING: An illegal reflective access operation has occurred, beim Compilieren von JasperReports, was bedeutet das ? Allgemeine Java-Themen 23
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
C Fehler beim Debuggen von Listen Allgemeine Java-Themen 4
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
B Input/Output Probleme beim Ausführen von Shell-Befehlen mit Java Allgemeine Java-Themen 28
J Probleme beim einbinden von Zip4j library Allgemeine Java-Themen 6
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11
S Seitenausrichtung beim Drucken Allgemeine Java-Themen 1
RalleYTN Brauche Hilfe beim Run-Length-Decoding Allgemeine Java-Themen 9
R Optimierung beim Vergleichen von 2 Bildern Allgemeine Java-Themen 23
F SQLite mit Java / Probleme beim INSERT Befehl Allgemeine Java-Themen 4
I Fehler beim Ant-Package erstellen mit Java 9 Allgemeine Java-Themen 1
S Eclipse Probleme beim Implementieren / Ausführen von jUnit 5-Test Suites Allgemeine Java-Themen 14
M Beim Öffnen Dialog Directory und Filetype definieren Allgemeine Java-Themen 2
G Problem beim GUI Allgemeine Java-Themen 9
A Probleme beim Verstehen einer Aufgabenstellung Allgemeine Java-Themen 11
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
J Konstruktor in JSP beim Kompilieren nicht gefunden Allgemeine Java-Themen 3
perlenfischer1984 Probleme beim Mocken Allgemeine Java-Themen 6
A Fehler beim Aktualisieren JTable Allgemeine Java-Themen 1
D Pivot-Wahl beim QuickSort steigert die Effizienz, eine Lüge??? Allgemeine Java-Themen 17
J-Gallus Erste Schritte Wahrscheinlich Anfänger Fehler beim rechnen. Falsches Ergebnis. Allgemeine Java-Themen 9
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
Fischkralle Beim Clean Coden an den Schnittstellen geschnitten. Allgemeine Java-Themen 10
H Beim Konstruktor "this" Allgemeine Java-Themen 4
I Problem beim Aufrufen, von Objektmethoden/ -variablen Allgemeine Java-Themen 6
J Interpreter-Fehler Fehler beim Verschlüsseln Invalid AES key length Allgemeine Java-Themen 1
R probleme beim starten von jar unter linux Allgemeine Java-Themen 2
Thallius Swing Merkwürdiges Verhalten beim Panel Tausch Allgemeine Java-Themen 3
Tacofan Sound beim öffnen der GUI Allgemeine Java-Themen 8
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
B Endlosschleife beim Verteilen von Objekten Allgemeine Java-Themen 4
V JavaFX Fehler beim Starten einer Jar Allgemeine Java-Themen 7
B Fortschritt beim Schreiben einer Datei ausgeben lassen Allgemeine Java-Themen 7
J JDK installieren Das Jdk funtioniert beim Editor nicht. Allgemeine Java-Themen 3
R Verdrückt beim Sicherheitshinweis Allgemeine Java-Themen 2
M Probleme beim rechnen, bei Zahlen mit führenden Nullen. Allgemeine Java-Themen 7
javampir Input/Output Effizienz beim binären Lesen einer Datei Allgemeine Java-Themen 6
javampir Seltsame Lücken beim Abspielen von Sound Allgemeine Java-Themen 2
RalleYTN JAnsi Warum bleiben die Hintergrundfarben beim Reseten der Konsole? Allgemeine Java-Themen 0
T BufferedImage verändert sich beim Einlsesen Allgemeine Java-Themen 1
E JCuda-0.6.5 Probleme beim ausführen der Datei Allgemeine Java-Themen 0
S Verständnisproblem beim Mocking Allgemeine Java-Themen 8
W JNDI - LDAP - Probleme beim editieren von Usern Allgemeine Java-Themen 0
Athena Programm funktioniert nur beim Debugging korrekt, sonst nicht. Allgemeine Java-Themen 1
N Zahlensysteme umrechnen; Probleme beim Umwandeln Allgemeine Java-Themen 4
K Fehler beim erstellen von .jar Datei Allgemeine Java-Themen 3
M Eclipse Fehler beim Installieren des Plugins "Jigloo" Allgemeine Java-Themen 12

Ähnliche Java Themen

Neue Themen


Oben