У меня есть суперкласс, из которого простираются несколько разных подклассов. Каждый подкласс тогда имеет конкретные методы для этого конкретного класса, что другие подклассы не могут следовать. то есть:Доступ к методам ArrayList с несколькими типами объектов в
- NMEA общественного класса ... методы, которые все подклассы держат
- общественного класс GPGGASentence расширяет NMEA .. имеют некоторый определенный метод для этого типа
- общественного класс GPGPSSentence расширяет NMEA .. имеют некоторый определенный метод к этому типу
Я создаю подкласс, проверив первые несколько букв в строке и затем переключаясь между возможностями.
ArrayList<NMEA> sentences = new ArrayList<>();
switch (s.split(",")[0]){
case "$GPGGA":
sentences.add(new GPGGASentence(s));
break;
case "$GPGPS":
sentences.add(new GPGPSSentence(s));
break;
}
Я сейчас добираюсь до точки, в которой я хочу пройти через этот массив ArrayList. В настоящее время я делаю следующее:
for(NMEA nmea : sentences){
if(nmea instanceof GPGGASentence){
system.out.println((GPGGASentence) nmea).someSpecificMethod());
}
}
Мне было интересно, если это их лучший способ сделать это.
Это флаг reg. Вам нужно кодировать интерфейсы. Потратьте некоторое время на чтение шаблонов проектирования. – OldProgrammer
Я рекомендую удалить определенные методы из подклассов и вместо этого переопределить абстрактный метод в каждом из подклассов. – 4castle
Ваш суперкласс должен реализовать все возможные методы, вы их вызовете, и они могут просто ничего не делать. –