Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
Ich habe gerade ein Problem an dem ich mir die Zähne ausbeisse. Ich möchte in meinem Interface sicherstellen das der übergeben Typ mindestens das Interface COntainedI implementiert hat
Code:
public void setContainer <T extends ContainedI>(T con);
Würde sowas in der Art gehen? Und das ich in der Funktion es dann konkretisiere bsp mit :
Code:
public void setContainer(LevelI c)
da Level abgeleitet ist von ContainedI. Oder bin ich da total auf dem Holzweg. Hoffe ich habe das einigermassen klar rübergebracht was ich fragen wollte...
Für die Implementierung gelten die gleichen "Spielregeln", wie für das Interface. Wird in einem Interface
vorausgesetzt, dass ein Methodenparameter das Interface A implementiert, kannst du in der Implementierung
der Methode nicht ein erweitertes Interface voraussetzen. Für Rückgabewerte einer Methode gilt das nicht.
Huh! Ich verstehe mich selbst nicht. :wink:
Hier ein Beispiel
Code:
public class GenericsExample
{
static interface A
{
String gimmeA();
}
static interface B extends A
{
String gimmeB();
}
static class AImpl implements A
{
public String gimmeA()
{
return "A";
}
}
static class BImpl extends AImpl implements B
{
public String gimmeB()
{
return "B";
}
}
static interface Foo
{
<T extends A> void tueWas(T o);
<T extends A> T tueWas();
}
static class FooImpl implements Foo
{
public void tueWas(B o) // B kann mehr als im Interface Foo verabredet, daher ungültige Signatur
{
o.gimmeB(); // AImpl implementiert diese Methode nicht!
}
public B tueWas() // B ist OK, da es auch ein A ist
{
return new BImpl();
}
}
public static void main(String[] args)
{
Foo foo = new FooImpl();
foo.tueWas(new AImpl());
foo.tueWas(new BImpl());
}
}
Hallo, mir wurde diese drei klassen gegeben
package sortieren;
public class Messwert implements ISortierbar
{private double wert;
public Messwert(double w)
{
wert = w;
}
public double getWert()
{
return wert;
}
@Override
public boolean istGroesserAls(ISortierbar zuVergleichend) throws UnvergleichbarkeitsException
{ und
package sortieren;
public class UnvergleichbarkeitsException extends Exception
{ public UnvergleichbarkeitsException(String message)
{
// Weitergabe an den Superkonstruktor
super(message);
}
} und
package sortieren;
public interface ISortierbar
{ public boolean istGroesserAls(ISortierbar zuVergleichend) throws UnvergleichbarkeitsException;
} jetzt muss ich eine Klasse BubbleSort erstellen, in der Klassenmethode void sortiere (ISortiebar[] elemente) soll die oben genannten Algorithmus implementieren werden und die als Argument übergebene Folge sortiert werden. Die Aufgabe besagt, wenn ein Vergleich von zwei Elementen nicht durchführbar ist, so soll die entstandene Ausnahme UnvergleichbarkeitsException an die aufrufende Methode weitergeleitet werden. Die Klasse soll nur diese eine Methode besitzen.
Mein Problem ist ich habe bis jetzt nie programmiert, der Dozent ist leider auch sehr schnell, habe teilweise diese Aufgabe verstanden nur was soll ich in der Klasse BubbleSort denn schreiben, wie soll ich sie ausführen, für jegliche Unterstützung bin ich dankbar.