Я недавно узнал, как 3 новых языка, и я начинаю их путать. Я не работал Java, делая что-то особенно сложное (вне android) через пару лет. У меня возникли проблемы с запоминанием, если это возможно:Изменение семантики методов подкласса в java
Я подклассифицирую ArrayList в основном, поэтому я могу сохранить приказ арраиста. Я пытаюсь переопределить метод add(object)
, но я хочу, чтобы он возвращал int вместо логического (местоположение добавляемого объекта). Но я получаю ошибки в возвращаемом типе моего метода.
Является ли то, что я хочу даже на языке? Можете ли вы, чтобы метод в подклассе возвращал нечто отличное от метода суперкласса?
Или я пытаюсь сделать что-то глупое? Разве это нарушает идею наследования is-a
? Должен ли я просто инкапсулировать арраиста вместо его расширения?
Для справки, часть того, что я пытаюсь сделать:
public class AuthorArray extends ArrayList \{
@Override
public int add(Author object) {
super.add(object);
Collections.sort(this, new SortByLastName());
return this.indexOf(object);
}
}
Я думаю, что с помощью 'ArrayList' не идеально подходит для этого. Попробуйте 'SortedSet', например:' TreeSet'. – NullUserException