Generischen Klassen

Adriano10

Bekanntes Mitglied
Java:
public interface  Older<T> {

    public boolean isOlder(T Other);

}


public class Person<T> implements Older<T> {

    private T name;
    private T alter;
 
    public Person(T name, T alter) {
        this.name =  name;
        this.alter =  alter;
   
    }

   
    public T getName() {
        return name;
    }


    public void setName(T name) {
        this.name = name;
    }


    public T getAlter() {
        return alter;
    }


    public void setAlter(T alter) {
        this.alter = alter;
    }


    public boolean isOlder(T Other) {
       
    if((int) Other > (int) this.alter) {
        return true;
    }
    return false;
    }

}


import java.util.LinkedList;

public class Group<T extends Person> {
    LinkedList<T> list = new LinkedList<>();
    Person<T> alter;
    public void add(T member) {
        list.add(member);
    }
    public Person<T> getAlter() {
        for(int i = 0; i < list.size(); i++) {
            if(alter.isOlder( list.get(i))) {
                return alter.getName();
            }
        }
        return null;
    }
    public void setAlter(T alter) {
        this.alter = alter;
    }
   
   

}

public class Test {
   
    public static void main(String[] args) {
       
        Group<Person> group = new Group<>();
       
        group.add(new Person("Beka", 26));
        group.add(new Person("Gela", 28));
        group.add(new Person("Carl", 24));
        System.out.println(group.getAlter().getName());
       
       
    }

}


Was fehlt der Quellcode, damit sie älteste Mietglied der Gruppe ausgibt. z.B "Gela"....



Wo mache ich Fehler....



Vielen Dank für jede Hilfe...
 
Zuletzt bearbeitet von einem Moderator:

MoxxiManagarm

Top Contributor
Wieso hat group eine Methode für set und get alter? Sollte die Methode nicht eher getEldest oder sowas heißen? alter ist total irritierend namentlich.

Java:
public boolean isOlder(T Other) {
       
    if((int) Other > (int) this.alter) {
        return true;
    }
    return false;
    }

Du kannst nicht einfach ein Objekt vom Typ Person auf int casten. Abgesehen davon können solche expressions verkürzt werden.

Java:
public boolean isOlder(T other) {
  return other.alter > this.alter;
}

PS.: Bist du dir sicher, dass true zurückkommen soll, wenn other älter ist? Sollte es vielleicht andersherum sein?
 

krgewb

Top Contributor
Hier noch sein Kommentar (er ist nämlich im code-Blog gelandet):

Was fehlt der Quellcode, damit sie älteste Mietglied der Gruppe ausgibt. z.B "Gela"....
Wo mache ich Fehler....
Vielen Dank für jede Hilfe...
 

LimDul

Top Contributor
Irgendwie ist die Klasse Person totaler Käse. Was soll T überhaupt darstellen? Warum sind Name und Alter vom Typ T? Ist Name nicht eher String und Alter int? Wofür dient der generische Typ T überhaupt? So kann das alles nicht funktionieren.
 

Adriano10

Bekanntes Mitglied
Wieso hat group eine Methode für set und get alter? Sollte die Methode nicht eher getEldest oder sowas heißen? alter ist total irritierend namentlich.

Java:
public boolean isOlder(T Other) {
      
    if((int) Other > (int) this.alter) {
        return true;
    }
    return false;
    }

Du kannst nicht einfach ein Objekt vom Typ Person auf int casten. Abgesehen davon können solche expressions verkürzt werden.

Java:
public boolean isOlder(T other) {
  return other.alter > this.alter;
}

PS.: Bist du dir sicher, dass true zurückkommen soll, wenn other älter ist? Sollte es vielleicht andersherum sein?
über Other kann ich alter leider nicht zugreifen.. Other.alter so geht leider nicht...
 

Flown

Administrator
Mitarbeiter
Da ist einiges schief gegangen... Der Name und das Alter werden immer Zeichenketten und Zahlen sein:
Java:
class Person implements Older<Person> {
 
  private String name;
  private int alter;
 
  public Person(String name, int alter) {
    this.name = name;
    this.alter = alter;
   
  }
 
 
  public String getName() {
    return name;
  }
 
 
  public void setName(String name) {
    this.name = name;
  }
 
 
  public int getAlter() {
    return alter;
  }
 
 
  public void setAlter(int alter) {
    this.alter = alter;
  }
 
  @Override
  public boolean isOlder(Person other) {
    return this.alter > other.alter;
  }
}
Bei dem interface ist die public Deklaration überflüssig. Alle Methoden - die nicht private sind - sind implizit public.
Java:
interface Older<T> {
  boolean isOlder(T other);
}

Der Trick ist jetzt die erste Peron zu wählen und Schritt für Schritt durchgehen und die älteste Person auswählen:
Java:
class Group<T extends Person> {
  private List<T> list = new ArrayList<>();
 
  public void add(T member) {
    list.add(member);
  }
 
  public Person getOldestPerson() {
    // Wenn Liste leer ist, dann 'null' zurückgeben oder Exception werfen
    Person oldest = ...; // Erste Person auswählen
    for (...) { // Ab dem 2ten Element starten und bis zur exklusive Listenlänge iterieren.
      if (...) { // Überprüfung ob oldest noch immer die älteste Person ist
        oldest = ...; // Zuweisung der älteren Person
      }
    }
    return ...; // Rückgabe der ältesten Person
  }
}
 

Adriano10

Bekanntes Mitglied
Da ist einiges schief gegangen... Der Name und das Alter werden immer Zeichenketten und Zahlen sein:
Java:
class Person implements Older<Person> {

  private String name;
  private int alter;

  public Person(String name, int alter) {
    this.name = name;
    this.alter = alter;
  
  }


  public String getName() {
    return name;
  }


  public void setName(String name) {
    this.name = name;
  }


  public int getAlter() {
    return alter;
  }


  public void setAlter(int alter) {
    this.alter = alter;
  }

  @Override
  public boolean isOlder(Person other) {
    return this.alter > other.alter;
  }
}
Bei dem interface ist die public Deklaration überflüssig. Alle Methoden - die nicht private sind - sind implizit public.
Java:
interface Older<T> {
  boolean isOlder(T other);
}

Der Trick ist jetzt die erste Peron zu wählen und Schritt für Schritt durchgehen und die älteste Person auswählen:
Java:
class Group<T extends Person> {
  private List<T> list = new ArrayList<>();

  public void add(T member) {
    list.add(member);
  }

  public Person getOldestPerson() {
    // Wenn Liste leer ist, dann 'null' zurückgeben oder Exception werfen
    Person oldest = ...; // Erste Person auswählen
    for (...) { // Ab dem 2ten Element starten und bis zur exklusive Listenlänge iterieren.
      if (...) { // Überprüfung ob oldest noch immer die älteste Person ist
        oldest = ...; // Zuweisung der älteren Person
      }
    }
    return ...; // Rückgabe der ältesten Person
  }
}
Vielen Dank, mir wurde sehr geholfen,,,,
 

athkougr

Mitglied
Muss du das Older interface implementieren? Meiner Meinung nach ist es überflüssig. Ich habe dass so gemacht das Person, das Comparable interface implementiert um den Vergleich der compareTo method zu überlassen. Die Group Klasse brauchst du auch nicht. Meine Test Klasse sieht so aus:
Java:
package de.test;

import de.test.Person;
import java.util.List;
import java.util.ArrayList;

public class Test {
    
    public static void main(String[] args) {
        List<Person> people = new ArrayList<>();
        
        people.add(new Person("Beka", 26));
        people.add(new Person("Gela", 28));
        people.add(new Person("Carl", 24));
        
        people.sort((lhs, rhs) -> lhs.compareTo(rhs));
        people.forEach(System.out::println);
    }
}

Die Ausgabe ist
Code:
[Name: Gela    Alter: 28]
[Name: Beka    Alter: 26]
[Name: Carl    Alter: 24]

Im obigen code fehlt die Person Klasse. Wie gesagt, habe ich das Comparable interface benutzt, die Methoden compareTo und toString implementiert. Wenn dir allerdings lambda expression und streams nichts sagt dann ist der code allerdings schwer zu verstehen.
 

Adriano10

Bekanntes Mitglied
Da ist einiges schief gegangen... Der Name und das Alter werden immer Zeichenketten und Zahlen sein:
Java:
class Person implements Older<Person> {

  private String name;
  private int alter;

  public Person(String name, int alter) {
    this.name = name;
    this.alter = alter;
 
  }


  public String getName() {
    return name;
  }


  public void setName(String name) {
    this.name = name;
  }


  public int getAlter() {
    return alter;
  }


  public void setAlter(int alter) {
    this.alter = alter;
  }

  @Override
  public boolean isOlder(Person other) {
    return this.alter > other.alter;
  }
}
Bei dem interface ist die public Deklaration überflüssig. Alle Methoden - die nicht private sind - sind implizit public.
Java:
interface Older<T> {
  boolean isOlder(T other);
}

Der Trick ist jetzt die erste Peron zu wählen und Schritt für Schritt durchgehen und die älteste Person auswählen:
Java:
class Group<T extends Person> {
  private List<T> list = new ArrayList<>();

  public void add(T member) {
    list.add(member);
  }

  public Person getOldestPerson() {
    // Wenn Liste leer ist, dann 'null' zurückgeben oder Exception werfen
    Person oldest = ...; // Erste Person auswählen
    for (...) { // Ab dem 2ten Element starten und bis zur exklusive Listenlänge iterieren.
      if (...) { // Überprüfung ob oldest noch immer die älteste Person ist
        oldest = ...; // Zuweisung der älteren Person
      }
    }
    return ...; // Rückgabe der ältesten Person
  }
}
Ich danke Ihnen noch mal, jetzt funktioniert perfekt, das war sehr grosse Hilfe für mich
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Vergleiche bei generischen Datentypen Java Basics - Anfänger-Themen 7
H Datentypen Generischen Typ instanzieren Java Basics - Anfänger-Themen 19
D generischen Sammlung Java Basics - Anfänger-Themen 29
Shizmo Frage zu generischen Arrays Java Basics - Anfänger-Themen 3
G Was ist der Nutzen von generischen Konstruktoren? Java Basics - Anfänger-Themen 4
M Datentypen Konstruktor mit generischen Parametern überladen Java Basics - Anfänger-Themen 3
H Collections Array mit generischen Typ Java Basics - Anfänger-Themen 11
X eigener Mergesort auf generischen Typen mit Comparator Java Basics - Anfänger-Themen 6
Z Problem mit Ausgabe eines generischen Suchbaums Java Basics - Anfänger-Themen 3
G Class eines Generischen Datentyps? Java Basics - Anfänger-Themen 6
T Vergleich von generischen Typen Java Basics - Anfänger-Themen 2
F Generische Liste von generischen Objekten. Java Basics - Anfänger-Themen 3
A Array mit generischen Typen casten? Java Basics - Anfänger-Themen 6
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Wo ist der Wurm in meinem Grundverständnis von Klassen? Java Basics - Anfänger-Themen 22
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Z Mehtode bei Start des Programms ausführen (Klassen übergreifend) Java Basics - Anfänger-Themen 12
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
G Java Klassen und Instanzmethoden Java Basics - Anfänger-Themen 15
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
J 2 klassen benutzen Java Basics - Anfänger-Themen 5
A Klassen und methoden Java Basics - Anfänger-Themen 15
A Bankweverwaltung mit Klassen und Methoden Java Basics - Anfänger-Themen 14
J Klassen Problem Java Basics - Anfänger-Themen 8
I Java Klassen "Graphics" und "MouseEvent" kombinieren Java Basics - Anfänger-Themen 7
I Klassen als Datentyp nutzen? Java Basics - Anfänger-Themen 11
M Aufsplitten von Methoden in andere Klassen Java Basics - Anfänger-Themen 2
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
C Klassen objektorientiert aufteilen Java Basics - Anfänger-Themen 6
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
F Klassen und Pakete Projektübergreifend (Eclipse) Java Basics - Anfänger-Themen 6
V_Fynn03 Klassen Überweisungen tätigen und einzahlen mit 2 Klassen Java Basics - Anfänger-Themen 1
W Abarbeitungsreihenfolge Anonyme Klassen Java Basics - Anfänger-Themen 2
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
W Frage zu anonymen Klassen Java Basics - Anfänger-Themen 4
Curtis_MC Parameter-Übergabe bei Klassen und Methoden Java Basics - Anfänger-Themen 12
E Klassen implementieren Java Basics - Anfänger-Themen 94
T Interfaces in erbenden Klassen Java Basics - Anfänger-Themen 2
C Methoden/Klassen Übergabewerte Java Basics - Anfänger-Themen 8
C Java Klassen/Methoden/Übergabeparameter Java Basics - Anfänger-Themen 4
L Wie geht man bei mehreren Action Klassen vor? Java Basics - Anfänger-Themen 0
P Datentypen, Klassen, Operatoren, Wrapperklassen Java Basics - Anfänger-Themen 2
L Wie teilt man ein Programm in vernünftige Klassen ein? Java Basics - Anfänger-Themen 10
T Klassen Denkfehler im Klassen "dynamisch" instanzieren? Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
A Methode, Klassen Java Basics - Anfänger-Themen 3
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
J Zwei Klassen die sich gegenseitig referenzieren - Bad practice? Java Basics - Anfänger-Themen 4
G Klassen und Objekte Java Basics - Anfänger-Themen 2
Java The Hutt SetWerte über verschiedene Klassen Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben