- AMD vs. INTEL vs. NVIDIA
- OLED TV topic
- Analóg fényképezés
- Amlogic S905, S912 processzoros készülékek
- 5.1, 7.1 és gamer fejhallgatók
- Azonnali informatikai kérdések órája
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- E-book olvasók
- Bemutatkoztak az Arctic P Pro Reverse sorozatú, "tükrözött" légkavarói
- Xiaomi Mi Box androidos médialejátszó 4K és HDR támogatással
Új hozzászólás Aktív témák
-
modder
aktív tag
Karma írta: "A lényeg az, hogy milyen szolgáltatást nyújt, nem az, hogy konkrétan hogyan oldja meg."
Igazából ez a legfontosabb dolog. Amit még hozzá tennék, hogy kontextusfüggő vagy scope függő, hogy a statikus típusa a változónak Map vagy TreeMap legyen-e.
Amikor az osztályod (osztályaid) külső interfészét tervezed meg, akkor a hívó kliens kódnak nem kell tudnia hogy milyen konkrét implementációt (TreeMap vagy HashTable) ad vissza az osztályod egy függvénye, csak azt, hogy a visszaadot érték Map tulajdonságú.
De az osztályon belül fontos lehet, hogy konkrét típust deklarálj. Például egy JSON feldolgozó osztályt csinálsz, és szeretnéd, ha a hívó kliens egyszerűen egy OutputStreambe tudja írni a feldolgozandó JSON stringet. Neked azonban kell egy módszer a JSON feldolgozó osztályban, amivel ki tudod nyerni az OutputStreambe írt adatot. Az OutputStream interfészben nincsen deklarálva semmilyen metódus, amivel adatot ki tudnál nyerni (nem is arra való). De a ByteArrayOutputStreamben vissza tudod kérni a beírt adatot byte[] tömbként.
Konkrét példa:
public class MyJsonParser {
private ByteArrayOutputStream jsonByteStream = new ByteArrayOutputStream();
public OutputStream getOutputStream() {
return (OutputStream) jsonByteStream;
}
public JsonObject parse() {
// fontos tudni hogy ez egy ByteArrayOutputStream hogy használhassuk a toByteArray() metódusát
byte[] jsonBytes = jsonByteStream.toByteArray();
JsonObject jObject = new JsonObject();
// parszoljuk a json stringet
return jObject;
}
}
public class Application {
public static void main(String[] argv) {
MyJsonParser parser = new MyJsonParser();
// kit érdekel a konkrét implementációja az OutputStreamnek én csak írni akarok bele?
OutputStream parserOutputStream = parser.getOutputStream();
parserOutputStream.write( argv[0].getBytes() );
JsonObject jObject = parser.parse();
}
}Ezt csak azért írtam le, mert nem örök igazság, hogy csak interfész típust deklarálunk.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Eladó! Garanciás! Gigabyte Aorus RTX 3070TI
- MACBOOK PRO M1 8G/256G, ÜZLETBŐL, GARANCIÁVAL
- Evolv Shift 2 Air / X570 ITX / Ryzen 5800X / Radeon 5700XT 8GB / 32 GB DDR4 / 1 TB SSD
- Lenovo ThinkPad P1 Gen 3 i9-10885H (max 5,3GHz) / 32GB / 1TB SSD FHD Win11
- Latitude 5440 14" FHD IPS i5-1345U 16GB 512GB NVMe ujjlolv IR kam gar
- GYÖNYÖRŰ iPhone 14 Pro Max 256GB Deep Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS3419
- Dell D6000 univerzális dokkoló USB-C/ USB-A, DisplayLink & Dell WD15 (K17A) USB-C + 130-180W töltő
- HIBÁTLAN iPhone 14 Pro Max 256GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS3511
- HPE Aruba switch, 48G PoE+, 4SFP+, L3, Smart managed
- Gamer PC-Számítógép! Csere-Beszámítás! R5 8400F / RX 6800 16GB / 32GB DDR5 / 1TB SSD!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: NetGo.hu Kft.
Város: Gödöllő