2016-05-12 17 views
0

Ich erhalte die folgenden Fehler: kann nicht Symbol Fehler beim Versuch zu finden, eine verschachtelte Generics-Struktur in JDK7 zu implementieren, um eine 1 zu viele Beziehung darzustellen.Java-Generics geschachtelte Klassen

Aktivitäten haben 1 zu viele Aktivitäten und Sitzungen. Aktivität hat 1 zu viele Runden und Training. Runde hat 1 zu viele Track. Track muss 1 zu viele TrackPoint.

public class Activities<Activity, Session> { 
    private ArrayList<Activity> activities; //with getter and setter 

..... }

public class Activity<Lap,Training> { 
    private ArrayList<Lap> laps;// with getter and setter 
    private ArrayList<Training> trainings; 
} 

und so weiter.

Wenn ich versuche, activities.getActivities() zu bekommen, bekomme ich den Kompilierungsfehler.

ArrayList<Activity> activities = (ArrayList<Activity>)activities.getActivities(); 

Muss ich es wie ArrayList<Activity<Lap<Track<TrackPoint>>>>,Training> ?

+0

Können Sie eine [mcve] bereitstellen, die wir dem Java-Compiler zuführen können, um das Problem sofort zu sehen? –

+0

'ArrayList Aktivitäten = (ArrayList ) activities.getActivities();' ergibt keinen Sinn. Sie können 'getActivities()' nicht in 'Aktivitäten' aufrufen, während Sie die Variable' activities' definieren. – marstran

+0

@marstran Das war, was ich auch herausgefunden habe - ich kann nicht die gleichen Variablennamen-Aktivitäten verwenden - Duh !!! – Vijay

Antwort

0

definieren müssen Es ist ein Tippfehler: Sie die Variable activities deklarieren, die Sie verwenden bereits:

ArrayList<Activity> activities = (ArrayList<Activity>)activities.getActivities(); 

Versuchen Sie stattdessen:

ArrayList<Activity> foo = (ArrayList<Activity>)activities.getActivities(); 

Sie brauchen kein Ereignis mehr:

ArrayList<Activity> foo = activities.getActivities();