Byla vydána nová verze 9.9 sady aplikací pro SSH komunikaci OpenSSH. Z novinek lze vypíchnout podporu hybridní post-kvantové výměny klíčů založené na FIPS 203 ML-KEM (Module-Lattice Key Enapsulation mechanism) v kombinaci s X25519 ECDH, tj. nový výchozí algoritmus "mlkem768x25519-sha256". Počátkem roku 2025 bude z OpenSSH odstraněna podpora DSA.
Interaktivní monitor zdrojů btop++, tj. C++ verze a pokračování monitorů bashtop a bpytop, byl vydán v nové verzi 1.4.0. Přináší podporu monitorování Intel GPU a NetBSD.
Byl vydán Nextcloud Hub 9. Představení novinek tohoto open source cloudového řešení také na YouTube.
Americký výrobce čipů Qualcomm se v minulých dnech obrátil s nabídkou na převzetí na konkurenční firmu Intel, která nyní prochází jednou ze svých největších krizí. Uvedl to list The Wall Street Journal s odvoláním na informované zdroje. Tržní hodnota Intelu se nyní pohybuje kolem 87 miliard amerických dolarů. Tržní hodnota firmy Qualcomm se pohybuje kolem 185 miliard dolarů.
Byla vydána beta verze Ubuntu 24.10 s kódovým názvem Oracular Oriole. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 24.10 mělo vyjít 10. října 2024.
Linux na 4bitovém mikroprocesoru Intel 4004 z roku 1971? Ale jistě: Linux/4004 (YouTube).
Google Chrome 129 byl prohlášen za stabilní. Nejnovější stabilní verze 129.0.6668.58 přináší řadu novinek z hlediska uživatelů i vývojářů (YouTube). Podrobný přehled v poznámkách k vydání. Opraveno bylo 9 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře (YouTube: DevTools Chrome 127-129).
Byly nalezeny a opraveny bezpečnostní chyby CVE-2024-38812 a CVE-2024-38813 s CVSS 9.8 a 7.5 ve VMware vCenter Server. Jedná se o vzdálené spouštění příkazů (RCE) a eskalaci oprávnění.
MojeID rozdává bezpečnostní klíče (tokeny) GoTrust Idem Key pro přístup k online službám veřejné správy (NIA). Ti, kteří již mají, mohou získat tablet ve slosování.
Společnosti Nintendo a Pokémon žalují společnost Pocketpair. Její hra Palworld prý porušuje patenty Nintendo a Pokémon.
final EditText myEditText = (EditText)findViewById(R.id.myEditText);
Chápu že muselo dojít k přetypování z View na EditText protože findViewById vrací View a já potřebuju EditText. Kde se ale dá zjistit jaké typy jsou kompatibilní a lze je přetypovat ?
Dále mi neni jasný co je <String>
v tomto examplu :
final ArrayList<String> todoItems = new ArrayList<String>();
Díky za nakopnutí :)
Řešení dotazu:
test()
, o vraceném typu nic nevíte.
public Object test(int cislo) { if (cislo == 0) { return "nula"; } return 0; } String str = (String) test(0);V druhém případě jde o generika, novinku z Javy 5. Každopádně doporučuju sehnat nějakou učebnici Javy, dobrá je např. Učebnice jazyka Java od Pavla Herouta, novější vydáí už by měla zahrnovat i novinky v Javě 5.
Kde se ale dá zjistit jaké typy jsou kompatibilní a lze je přetypovat ?Přetypovat můžete co chcete na co chcete. Přetypování Vám ale "projde" jen v případě, že objekt je skutečně instancí dané třídy (nebo jejím potomkem). Pokud toto nebude splněno dostanete výjimku ClassCastException. To se týká přetypování objektů, přetypování primitivních typů je veskrze jiná věc.
Map map = (HashMap) new LinkedList();
OK, zdá se, že tohle chytne už překladač. Ale přeložíteMap map = (HashMap) new LinkedList();toto nepojde ani len skompilovat
Map m = (Map) new ArrayList();nebo
Map m = (HashMap) (Object) new ArrayList();a oboje podle očekávání vyhodí výjimku ClassCastException.
alebo predkom, co ale nema moc zmyselSmysl to má, pokud to třeba použijete v souvislosti s generiky (např. metodou
java.util.arrays.asList
).
LinkedList
na třídu HashMap
nepřetypujete, protože žádný objekt nemůže být zároveň typu HashMap
i LinkedList
. U rozhraní to možné je – můžete si vytvořit potomka ArrayList
, který bude zároveň typu Map
.
U toho konstruktoru je to sice vidět, že to přetypování je nesmysl, ale kompilátor zřejmě nezkoumá tenhle vyšší pohled. Pro kompilátor jsou to dva kroky – získání objektu typu ArrayList
(v tomto případě vytvořením nové instance) a v druhém kroku jeho přetypování. Když si místo toho představíte trochu jiný kód, ten už může normálně fungovat:
public ArrayList getArrayList() {…} Map m = (Map) getArrayList();
double
za předka int
).
Na druhou otázku také velmi zjednodušeně: jedná se o generiky a tento konkrétní zápis znamená, že v tom seznamu se mohou vykytovat pouze řetězce. Nic jiného tam nelze vložit a při čtení je automaticky deklarován typ String. Pozor na to, že generiky v Javě jsou zpracovávány jen na úrovní kompilátoru, ve výsledném kódu tam je deklarováno Object
a všude doplněno přetypování.
Tiskni Sdílej: