co i w jaki sposób zwraca metoda, której typ to typ interfejsu

0

Próbowałem szukać odpowiedzi w odmentach internetu, ale nie wiem do końca jak poprawnie sformułować pytanie. Rozwiązuję zadanie, w którym mam interfejs Cache, który zawiera metodę z innego interfejsu: CacheItem. Dalej mam klasę, która implementuje interfejs Cache i zawiera metodę: CacheItem cacheItem(Object item, String key). Pytanie brzmi co i w jaki sposób powinna zwracać ta metoda? Teoretycznie powinna zwrócić obiekt, który jest takiego samego typu jak interfejs? Czy to jest normalan praktyka?
Może nieprecyzyjnie się wyraziłem i przeglądnięcie kodu pozwoli wam zrozumieć co chcę zrobić:
https://github.com/fmastale/SmartCacheImpl/blob/master/src/com/smartcache/impl/CacheImpl.java

1

A jaka ma być inna praktyka, i co miałoby innego zwracać oO? Jak jest metoda która zwraca np. java.util.List to zwraca obiekt implementujący liste, może to być LinkedList, ArrayList albo nawet anonimową klasę.

0

Słusznie - nie pomyślałem o tym w ten sposób. Dzięki za pomoc!

1

Masz literówkę:

@Override
public CacheItem catcheItem(Object item, String key) {

Zastosowany @Override sugeruje że w więcej niż jednym miejscu.

0

rzeczywiście! dzięki za czujność :)

1

W Javie jak nadpisujesz metody możesz też zwracać bardziej ogolny typ,
tzn jeśli typ A ma metodę Collection<T> getSomething(),a B dziedziczy/implementuje A to B może mieć np. List<T> getSomething()

0

ok, teraz już rozumiem - wcześniej miałem do czynienia z interfejsami, ale robiłem jakieś proste operacje, dlatego nie wydało mi się to ewidentne. jeszcze raz dzięki Twoje komentarze, scibi!

1 użytkowników online, w tym zalogowanych: 0, gości: 1