public class Paar<T> {
T E;
T Z;
Paar(T E, T Z) {
this.E = E;
this.Z = Z;
}
public T erstes(){
return E;
}
public T zweites(){
return Z;
}
public String toString(){
String s = (E + " " + Z);
return s;
}
}
Jedoch weiss ich einfach nicht was er bei Aufgabe 2 von mir will.
Wäre super wenn Ihr mir vielleicht ein paar Denkanstösse geben könntet.
du hast schon einen Fehler in Aufgabe 1. Die Klasse Paar soll auch für 2 unterschiedliche Typen funktionieren. Du wirst daher 2 verschiedene generische Elemente benötigen.
Siehe Aufgabe 1: Paar<E,Z> und nicht Paar<T>
Aufgabe 2: du sollst eine Klasse PaarFeld<E,Z> erzeugen. Als Attribute soll sie Feld<E> und Feld<Z> besitzen. Der Rest sollte dann klar sein oder?
Das ist ne Convention, damit man im Code Generics von normalen klassen unterscheiden kann, von daher wenn man sich an die Konvention hält sind die ordentlich benannt
Das ist ja auch richtig, der Buchstabe wird ja weiterhin verwendet nur erhält er zusätzliche Informationen.
In diesem Fall sagt ZWEITES oder ERSTES nicht soviel aus. Aber wie würde man nun Generics deklarieren die zwei Types haben? T1 und T2 ? (in der Annahme das S,U,V auch schon weg sind)
Hier würde wieder der normale Ratschlag gelten; benenne Variablen aussagekräftig.
Edit:
Google verwendet hier z.B.: die Deklaration ClassName + Variable Letter
FooBarE
FooBarK
FooBarV
FooBarN
usw.
Das ist ja auch richtig, der Buchstabe wird ja weiterhin verwendet nur erhält er zusätzliche Informationen.
In diesem Fall sagt ZWEITES oder ERSTES nicht soviel aus. Aber wie würde man nun Generics deklarieren die zwei Types haben? T1 und T2 ? (in der Annahme das S,U,V auch schon weg sind)
Hier würde wieder der normale Ratschlag gelten; benenne Variablen aussagekräftig.
Edit:
Google verwendet hier z.B.: die Deklaration ClassName + Variable Letter
FooBarE
FooBarK
FooBarV
FooBarN
usw.
/**
* Represents a function that accepts two arguments and produces a result.
* This is the two-arity specialization of {@link Function}.
*
* <p>This is a <a href="package-summary.html">functional interface</a>
* whose functional method is {@link #apply(Object, Object)}.
*
* @param <T> the type of the first argument to the function
* @param <U> the type of the second argument to the function
* @param <R> the type of the result of the function
*
* @see Function
* @since 1.8
*/@FunctionalInterfacepublicinterfaceBiFunction<T,U,R>{
Als Beispiel aus Java8. Und es gibt keine Klasse die T, S, U, V und mehr braucht..
@TE: Ja, damit referenzieren die Attribute deiner Klasse auf das gleiche Objekt, das übergeben wurde. Jetzt musst du nurnoch den unteren Teil der Aufgabe einfügen