Hirdetés
- Okosóra és okoskiegészítő topik
- One mobilszolgáltatások
- EarFun Air Pro 4+ – érdemi plusz
- Garmin Fenix 8 Pro - nézz az ég felé!
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Xiaomi 15 - kicsi telefon nagy energiával
- Samsung Galaxy A54 - türelemjáték
- Samsung Galaxy A56 - megbízható középszerűség
- Telekom mobilszolgáltatások
- Yettel topik
Új hozzászólás Aktív témák
-
Szmeby
tag
Hogyan lehet vizsgálni, ha egy Objektum példánya létrejött (van, létezik)?
if (myObject != null) {
System.out.println("myObject objektumom létezik, hivogathatom a metódusait");
} else {
System.out.println("myObject objektumom nem létezik, ha ráhívok egy metódusára, NullPointerException a jutalmam");
}vagy
if (myObject instanceof String) {
System.out.println("myObject objektumom létezik, sőt azt is tudom róla, hogy String típusú, így bátran Stringgé castolhatom");
}Ha eleve String típusú a myObject változód, akkor felesleges instanceof-olni.
Pl.:String myObject = "kiskutya";
A bal oldalon jelölve vagyon, hogy ez legalább egy String, és mivel a java erősen típusos nyelv, compile error figyelmeztetne, ha valamit elcsesztél volna.Object myObject = "kiskutya";
Ebben az esetben nem lehetsz teljesen biztos benne, hogy ez egy String (annak ellenére, hogy erről a nyilvánvaló példáról ordít, hogy az), de ha szeretnéd String-ként kezelni, akkor castolnod kell mielőtt meghívod rajta a String osztély metódusait ((String)myObject).isEmpty(); Ha pedig ezt biztonságban szeretnéd elvégezni, akkor a castolás előtt érdemes csekkolni egy instanceof-fal, hogy valóban String van-e benne.
A null nem String, a null nem is Object, a null semmi. Az instanceof mindig false-szal fog visszatérni egy null referenciára, mert a semmiről nem lehet eldönteni annak típusát.És ha létrejött a példány, akkor még lehet null tartalmű, amire hogyan kérdeznétek rá? (azon túl, hogy kiteszed egy lokális változóba, ahogy az előbb írtad (ha nincs más, marad ez a módszer, csak elég bénácskának néz ki a kezdő szememnek))
Ha létrejött a példány, nem lehet null.Kiteheted lokális változóba, ha úgy kényelmes:
String product = info.getProductString();
if (product != null && product.equals("CM STORM INFERNO GAMING MOUSE")) {
System.out.println("match!!!");
}De nem kötelező, használhatod a gettert is újra meg újra:
if (info.getProductString() != null && info.getProductString().equals("CM STORM INFERNO GAMING MOUSE")) {
System.out.println("match!!!");
}De akár meg is mókolhatod a lekérdezéskor, hogy kiküszöböld az API hülyeségeit:
String product = info.getProductString() == null ? "" : info.getProductString(); // ez egy ternáris operátor, egyfajta kompakt if: ha a getter null, akkor üres stringet használ helyette, különben meg a getter által visszaadott nemnull értéket
if (product.equals("CM STORM INFERNO GAMING MOUSE")) {
System.out.println("match!!!");
}A java könyvek, vagy pl. az oracle tutorial relatíve korán elmagyarázza a java objektumok, referenciák, nullitás témakörét, érdemes rászánni azt a kis időt.
-
Aethelstone
addikt
Tisztázzuk. A csak deklarált, de még nem inicializált objektum kb. ugyanaz, mintha deklarálod, new Akarmi()-vel példányosítod, majd null-ra seteled. Ergó a kezelése is kb. ugyanaz.
Ha már létrejött egy példány, akkor nem lehet null...max a példányváltozók, de az megint egy másik kérdéskör.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- ÚJ HP Victus 15 - 15.6" FHD IPS 144Hz - Ryzen 5 8645HS - 16GB - 512GB - RTX 4050 - Win11 - 3 év gari
- Rezgéscsillapítók, távtartók (vízhűtéshez kiemelten), szűrők ventillátorhoz és táphoz
- Dell Precision 7770 17,3 FHD Laptop,i7-12850HX,32GB DDR5,RTX 3000 12GB,1TB,100% akku,NBD gari 2026ig
- 1db pixelhiba vagy hasonló - Dell U2415 vékony kávás full HD 1920x1200 IPS monitor HDMI Pivot mód
- Aquacomputer szűrő beépített csapokkal
- BESZÁMÍTÁS! ASUS Z97-K Z97 chipset alaplap garanciával hibátlan működéssel
- BESZÁMÍTÁS! GIGABYTE Z370P PRO i7 9700 16GB DDR4 512GB SSD RTX 2070 SUPER 8GB CM TD500 700W
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- LG 27MR400 - 27" IPS LED - 1920x1080 FHD - 100hz 5ms - AMD FreeSync - Villódzásmentes
- GYÖNYÖRŰ iPhone SE 2020 128GB White -1 ÉV GARANCIA - Kártyafüggetlen, MS3584, 100% Akksi
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest


