2016-03-06 1 views
0

Я хочу составить список экземпляров классов. Экземпляры принадлежат разным классам, хотя все они принадлежат к одному суперклассу. Этого я должен избегать? Или это прекрасно. Любые предложения о том, как наилучшим образом реализовать это, были бы замечательными.Различные классы (все расширения одного и того же класса) в списке/массиве (java)

Например, у меня есть автомобиль класса Super и два других класса, велосипед и автомобиль в качестве классов, которые расширяют транспортное средство. Для удобства я хочу сохранить все Транспортные средства в одном массиве/списке, поскольку я хочу отображать все транспортные средства с помощью простой петли.

Надеюсь, что я серьезно не обращу внимания на что-то, и это не становится слишком тривиальным (или просто плохой практикой).

+0

Вы пробовали что-нибудь? Можете ли вы показать код? Вы можете просто использовать «ArrayList», в котором хранятся экземпляры «Vehicle». – Marv

+1

Да, вы можете это сделать, но помните, что при извлечении записей из списка вы можете только предположить, что вы возвращаете «Vehicle», и вы можете только вызывать методы, объявленные на «Vehicle», без проверок и классов 'instanceof' -Кастинг. Правильное решение зависит от того, что вы делаете с данными. –

ответ

1

Это, безусловно, является правовой шаг:

public class Main { 

    public static void main(String[] args) { 
     List<Vehicle> list=new ArrayList<>(); 

     list.add(new Car()); 
     list.add(new Bike()); 
    } 
} 

class Vehicle{} 
class Car extends Vehicle{} 
class Bike extends Vehicle{} 

, но все это зависит от того, что вы пытаетесь достичь.

+0

Тот факт, что вы заявляете, что это законный ход, предполагает, что это плохая практика ... это дело? – MWB

+0

Абсолютно нет. Я хотел сказать, что не могу сказать, плохо ли это, потому что это зависит от контекста. Юридическая конструкция, хорошая практика, если не злоупотреблять =) –

+0

Я стараюсь сделать новое приложение для управления задачами. В моем подходе я хочу использовать разные типы задач. В приложении я хочу иметь возможность перечислять все задачи, но также и конкретные типы задач, в зависимости от того, что пользователь ищет в данный момент времени. – MWB

Смежные вопросы