Variablen Varargs und beliebige Datentypen

The_Unknown

Mitglied
Hallo,

seit einiger Zeit ist es ja auch in Java möglich, so genannte Varargs, also Integer... myInts, zu deklarieren.

Mit einigen Datentypen funktioniert das auch sehr gut. Nun wollte ich einer Funktion in Android (was ja auch quasi Java ist) mal Objekte übergeben, die nicht gerade Strings oder int's sind. Dann bekomme ich den Compile-Fehler, dass der Konstruktor blabla(ImageView, ImageView) nicht existiert.

Was tun 🙁?

Ciao The_Unknown
 
lol..
Anstatt mal einen Stacktrace, KSKB oder wenigstens den genauen Namen der Methode zu Schreiben, schreibst du einfach
Wie soll man dir da helfen?
Es gibt keinen Stacktrace, da der Fehler - wie bereits oben beschrieben - zur Entwurfszeit auftritt. Der Name der Funktion ist völlig irrelevant. Das KSKB findest du in meinem Posting. Aber noch mal ausführlich:
Java:
// eine Klasse
public MeinKonstruktor(ImageView... imageViews) {
  // some impl
}
//... aufrufende Klasse
MeinKonstruktor hallo = new MeinKonstruktor(new ImageView(), new ImageView());
Der untere Aufruf führt zu obigem Fehler.
 
Also prinzipiell ist das Nutzen von Varargs mit beliebigen Typen möglich. Auch in Konstruktoren. Deswegen muss der Fehler in Deinem Code stecken. Dazu zwei Ideen:
- Evtl. einfacher Schreibfehler beim Konstruktornamen (CamelCase etc.)
- ImageView gibt es in unterschiedlichen Packages mit diesem Namen und Du hast genau das Falsche übergeben (etwa wie bei java.util.List und java.awt.List)
 
Da ist kein Fehler in deinem Beispiel, das funktioniert:
Java:
public class MeinKonstruktor {
	public MeinKonstruktor(ImageView... imageViews) {

	}

	static class ImageView {
	}
	
	public static void main(String[] args) {
		new MeinKonstruktor(new ImageView(), new ImageView());
	}
}
Poste bitte mal ein KSKB wo es NICHT funktioniert.
 
Also prinzipiell ist das Nutzen von Varargs mit beliebigen Typen möglich. Auch in Konstruktoren. Deswegen muss der Fehler in Deinem Code stecken. Dazu zwei Ideen:
- Evtl. einfacher Schreibfehler beim Konstruktornamen (CamelCase etc.)
- ImageView gibt es in unterschiedlichen Packages mit diesem Namen und Du hast genau das Falsche übergeben (etwa wie bei java.util.List und java.awt.List)
Die zweite Idee war es. Es war aus Versehen die falsche ImageView-Implementierung importiert. Danke für den Hinweis!!
 
Haettest du dir mal das Compiler Stacktrace durchgelesen, waere dir wohl das komische Paket bei deinem ImageView aufgefallen. Auch wenn es eclipse oder andere rot unterstreichen kann man trotzdem eine vernuenftige Fehlermeldung bekommen.
 
Templarthelast hat gesagt.:
Haettest du dir mal das Compiler Stacktrace durchgelesen, waere dir wohl das komische Paket bei deinem ImageView aufgefallen. Auch wenn es eclipse oder andere rot unterstreichen kann man trotzdem eine vernuenftige Fehlermeldung bekommen.
Dem stimme ich zwar zu. Ich oute mich aber gleichzeitig als Glashausbewohner 😀 Wie oft ich schon auf die List-Geschichte reingefallen bin, kann ich garnicht mehr zählen...
 

Zurück
Oben