Diskuze: kód v triede mimo metód
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 16 zpráv z 16.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Samozřejmě, že ne. Bylo by to proti principu OOP.
Ano lze to.
public class Foo{
static{
//kod co chces vykonat, vykona se pouze jednou
}
{
//kod se vykona pred vytvoreni kazdou novou instanci
}
public Foo(){
...
}
}
Od toho jsou konstruktory, ať instanční nebo statický.
Ptal se jestli lze mit kod mimo metody, ne jestli je to spravne nebo ne. 
Podle dotazu moc nerozumí jak OOP funguje, takže tímhle bych ho opravdu
nepletl. Vždycky žasnu co do těch jazyků dávají, co to je za lidi? 
Konstruktory jsou potřebné pouze pokud potřebuješ do objektu předat inicializační parametry. Jinak je konstruktor zbytečný, kompozice objektu bez konstruktoru vypadá mnohem elegantněji.
Ten kód "před vytvořením instance" ani do složených závorek nedávám. Výsledek je však trochu odlišný: deklarované proměnné zůstávají součástí objektu. Když je dám do složených závorek, budou zlikvidovány.
Proč tam vlastně chceš dávat cyklus, když to jde i bez něho? Nějaká ukázka toho, co se ti nedaří, by nebyla?
Java není čistě objektový jazyk, a blok static se používá určitě častěji než myslíš
Možná hledáš něco takového:
Map<String,String> test = new HashMap<String, String>(){{
put(key1, value1);
put(key2, value2);
}};
Ide mi o to nejak spolu pospájať otázky správne odpovede na ne.
Najprv som chcel použiť Map, (vytvoril som si String[][] pole, obsahujúce
otázku aj odpoved), a potom prejst to pole cyklom, ktorý 'naputuje'
jednotlivé položky do Mapu.
Ale potom som zistil, že to pole mi vlastne bohate postačí, keď budem potrebovat otázku, vygenerujem z pola dvojícu, a potom porovnám if (userAnswer.equals(otazky[generovaneCislo][1]))
A ten poslední kód se ti nelíbí? Pokud to chceš tahat ze souboru nebo dvourozměrného pole, tak místo těch dvou putů uděláš cyklus, který projde všechny záznamy a putne je do mapy. Je to hezky zapouzdřené, je to tedy ve stylu OOP.
Použití toho pole bych se raději vyhnul. Přece jen je poněkud nepraktické dávat texty dovnitř aplikace. Raději bych je viděl v XML, CSV nebo v databázi.
"A ten poslední kód se ti nelíbí? Pokud to chceš tahat ze souboru nebo dvourozměrného pole, tak místo těch dvou putů uděláš cyklus, který projde všechny záznamy a putne je do mapy. Je to hezky zapouzdřené, je to tedy ve stylu OOP."
Ale páčil sa mi.. lenže ten cyklus a vkladanie tých otázok a odpovedí stojí nejaký čas a výkon nie? Ani neviem, či je branie položiek z HashMap-u rýchlejšie ako pole..
"Použití toho pole bych se raději vyhnul. Přece jen je poněkud
nepraktické dávat texty dovnitř aplikace. Raději bych je viděl v XML, CSV
nebo v databázi."
Ani jedno z tohto zatiaľ neviem 
Pro těch pár tisíc položek, pro které to potřebuješ, to nehraje zas takovou roli. Pokud bys toho měl víc nebo to chceš často modifikovat, použij raději zmíněné externí způsoby. Tohle je určitě rychlejší, než konverze toho 2D pole:
Map<String,String> test = new HashMap<String, String>(){{
put("key", "klíč");
put("cube", "krychle");
put("interface", "rozhraní");
}};
CSV by mohlo vypadat třeba takto:
key, klíč
cube, krychle
interface, rozhraní
Jenže na načtení toho souboru potřebuješ zmíněný cyklus, který to pole bude číst po řádcích a ukládat do slovníku. Do pár set tisíc řádek by to mohlo stačit, ale na milióny bych raději použil tu databázi.
Zobrazeno 16 zpráv z 16.