Witam
Czy ktoś mógł by mi wytłumaczyć jak działa interfejs z podanym konkretnym typem jako paramatryk? I jakie może mieć zastosowanie?
interface SomeInterface<String> {...}
Witam
Czy ktoś mógł by mi wytłumaczyć jak działa interfejs z podanym konkretnym typem jako paramatryk? I jakie może mieć zastosowanie?
interface SomeInterface<String> {...}
interface List<E>
class ArrayList<E> implements List<E>
class ListList<E> implements List<E>
https://docs.oracle.com/javase/8/docs/api/java/util/List.html
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html
Nie da się tak zrobić. Tzn no to jest taki hax, bo w twoim przykładzie String
to NIE JEST klasa String
tylko nazwa parametru :) Równie dobrze mógłbyś tam mieć T
albo S
. Robi się tak czasem, żeby było bardziej jasne który parametr jest który, np. MyInterface<Key, Value, Handler>
, może dla osoby która to implementuje bardziej czytelne niż MyInterface<K, V, H>
To ma sens. Dzięki za odpowiedzi.
Da się skompilować. :)
public interface Hello<String> {
java.lang.String hello();
}
public class HelloImpl<String> implements Hello<String> {
@Override
public java.lang.String hello() {
return "hello";
}
}
public class HelloImplTest {
@Test
public void hello() {
HelloImpl<Object> hello = new HelloImpl<>();
String h = hello.hello();
assertThat(h, is("hello"));
}
}
Shalom napisał(a):
Robi się tak czasem
Częściej będzie
/**
*
* @param <T>
*/
public interface Hello<T> {
String hello(T t);
}
No tak kompiluje się ale co to daje?
Jeśli to nie jest temat z jakiegoś zakręconego interview to wytłumaczył to ładnie @Shalom
To tylko literki, można coś opisać w pokręcony sposób w definicji interfejsu, w doc, w testach, w dokumentacji.
Może to być bardzo dobre ćwiczenie/doświadczenie dla wyciskania do max środowiska w którym się czujesz najlepiej zapominając, że mogą pracować w projekcie ludzie po prostu znający to środowisko na tyle, żeby w nim pracować.
Gdybym ja usłyszał: Tak nie można, to pierwsza myśl - nie skompiluje się bo...
Bardzo dużo za piszącego kod robią różne Eclipsy, JetBrainsy. Akceptacja domyślnej autouzupełniającej propozycji i pchać dalej.
Dorzucę kwestię jasności komunikacji. Kto nienawidził pisania wypracowań ma nad czym popracować ;)