Array auf einfaches Element umwandeln

Status
Nicht offen für weitere Antworten.

testing

Mitglied
Hi!

Wie kann ich von Object[] auf Object umwandeln?

Ich möchte nämlich auf Object==Object[] überprüfen. Mit equals funktioniert das nicht. Geht das oder liegt mein Denkfehler jetzt ganz woanders?

Grüße
testing
 
Ich versteh jetzt nicht ganz was du willst, aber wenn du das von Object implementierte equals aufrufst, dann ist das das selbe wie wenn du mit == vergleichst.
 
Ok, dann diesmal mit Code.

Ich habe folgendes Objekt:
Code:
enum Language {DE, EN};

Dann folgende Klasse:
Code:
class Message {
	
	
	String text;
	Language lang;
        ...

Dann hab ich in einer abgeleiteten Klasse folgende Funktion:
Code:
	protected Language[] getSpokenLanguages(){
		Language[] sprache={Language.EN};
		return sprache;
	}

In der Klasse von der die obige Funktion abgeleitet wurde, hab ich das hier
Code:
	public String answer(Message message){
		if (message.lang==getSpokenLanguages()){
			return introduceYourself();
		}
		else{
			return getDontUnderstandMessage();
		}
	}

So kann ich das Programm aber nicht ausführen da ich Object mit Object[] vergleiche. Lt. Angaben soll die Funktion getSpokenLanguage aber ein Array zurückliefern ...

Wie kann ich das lösen?
 
Wie willst du denn ein einzelnes atomares Objekt mit einem Haufen verschiedener Objekte vergleichen, jetzt mal rein logisch? Wenn du in einer Fußballmannschaft drin bist, bist du noch lange keine Fußballmannschaft, oder nich?

Wenn du überprüfen willst, ob ein element im array drin ist, dann hast du mehrere Möglichkeiten:
1) Mit Arrays.sort() und Arrays.binarySearch() das array sortieren und dann prüfen ob das element drin ist
2) Arrays.toList() benutzen, um die Sprachen in eine Liste zu speichern, und dann List#contains() darauf aufrufen
3) wenn du nicht allzufaul bist, implementierst du dir eine eigenbau-suchmethode, die überprüft, ob ein Objekt im Array enthalten ist (einzeiler)
 
Hmm, so wie ich das sehe vergleiche ich ein Objekt mit einem einelementigen Array (desselben Objekts). Ich bräuchte hier ja keine Suche sondern nur sowas wie [0] ...

Code:
if (message.lang==getSpokenLanguages()[0])

Komischerweise geht das hier jetzt. Ich hab wahrscheinlich bei den anderen Funktionen vergessen überall ein Array zurückzugeben.

Dennoch vielen Dank an euren guten Willen!
 
Zuletzt bearbeitet:
Was macht dann getSpokenLanguageS und Array als rückgabetyp überhaupt für ein Sinn, gib doch einfach eine Sprache zurück, wenn's doch immer nur eine gibt?😕
 
Hallo Andrey!

Du hast Recht! Es macht keinen Sinn. Aber es ist nur ein einfaches kurzes Beispiel gewesen, wo das für mich ausgereicht hat. Das klingt jetzt so als ob ich es ignorieren würde, da aber einige Teile exakt so vorgegeben sind, ändere ich das nicht mehr ab. Ich hoffe du verstehst das. Wenn es was größeres wäre, dann würde ich es so machen, wie du es beschrieben hattest.

LG
testing
 
> protected Language[] getSpokenLanguages()

also sollte der Zugriff getSpokenLanguages()[0] funktionieren, oder gibt es irgendeine Fehlermeldung?

da Language ein Enum ist kann man auch guten Gewissens == verwenden statt equals


edit:
> Komischerweise geht das hier jetzt.
oh, geht wohl schon, ich hatte 'Komischerweise geht das hier nicht.' gelesen 😉
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben