Cómo averiguar qué objeto está en una lista abstracto?

user11749216:

Tengo una clase abstracta llamada sesiones. Conferencias y tutoriales se extienden sesiones. Entonces tengo una llamada de inscripción en clase que mantiene una lista de sesiones (conferencias y tutoriales). ¿Cómo se puede recorrer la lista de sesiones de la matrícula y devolver una lista de conferencias sólo de la lista de sesiones?

Mi siguiente pregunta es debo almacenar en lugar de 2 listas. Una lista de conferencias y una lista de tutoriales, en lugar de 1 lista de sesiones? Esto se debe a la lista de sesiones es inútil para mí y tengo que recorrer cada vez para obtener información sobre conferencias y tutoriales. ¿Hay una manera que me falta para conseguir todos los objetos de conferencias? Soy nuevo en java.

public class Enrolment {

    private List<Session> sessions;

    public Enrolment() {
        this.sessions = new ArrayList<>();
    }

    public addSession(Session session) {
        this.sessions.add(session);
    }
}

public class Session {

    private int time;

    public Session(int time) {
        this.time = time;
    }
}

public class Lecture extends Session {

    private String lecturer;

    public Lecture(int time, String lecturer) {
        super(time);
        this.lecturer = lecturer;
    }
}

public class Tutorial extends Session {

    private String tutor;
    private int tutorScore;

    public Tutorial(int time, String tutor, int tutorScore) {
        super(time);
        this.tutor = tutor;
        this.tutorScore = tutorScore;
    }

}

public class test {
    public static void main(String[] args) {
        Enrolment newEnrolment = new Enrolment();

        Lecture morningLec = new Lecture(900, "Dr. Mike");
        newEnrolment.addSession(morningLec);

        Tutorial afternoonTut = new Tutorial(1400, "John Smith", 3);
        newEnrolment.addSession(afternoonTut);

        Lecture middayLec = new Lecture(1200, "Mr. Micheals");
        newEnrolment.addSession(middayLec);

        Tutorial NightTut = new Tutorial(1900, "Harry Pauls", 4);
        newEnrolment.addSession(NightTut);
    }
}
Consorcio inactivo :

Transmitir los sessionslista y utilizar instanceofpara filtrar los Lecturesobjetos de tipo

List<Lecture> l = sessions.stream()
                           .filter(Lecture.class::isInstance) 
                           .map(Lecture.class::cast)                               
                           .collect(Collectors.toList());

Mediante el uso de foruso de bucle dos listas diferentes para cada tipo de

List<Lecture> l = new ArrayList<>();
List<Tutorial> t = new ArrayList<>();
for (Session s : sessions) {
    if (s instanceof Lecture) {
        l.add((Lecture) s);
    }
      else if(s instanceof Tutorial) {
        t.add((Tutorial) s);
    }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=229228&siteId=1
Recomendado
Clasificación