Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 6 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
JAVA syntax - kod v {} pri vytvarani objektu?

Registrovaný: 11.02.09
Prihlásený: 28.03.23
Príspevky: 2208
Témy: 145
Bydlisko: Liptovský M...
Príspevok NapísalOffline : 02.04.2014 21:47

Nejak nemozem pochopit jedno:
Kód:
Objekt obj = new Objekt() { ...prikazy... }
Co znamena takato syntax, kedy sa vlastne spusti ten kod v { } ?

Konkretne som to videl tu:
Kód:
Timer timer = new Timer();

timer.schedule(new TimerTask() {

  @Override
  public void run() {
    // Your database code here
  }
}, 1000);

Vytvori sa novy objekt timer, vola sa jeho metoda shedule(), ktora ma ako parameter novy objekt TimerTask() a za nim spominane { } s nejakym kodom. Ten sa ako vykonava kedy?







_________________
"Only a warrior chooses pacifism, others are condemned to it."
- unknown author
Offline

Užívateľ
Užívateľ
JAVA syntax - kod v {} pri vytvarani objektu?

Registrovaný: 27.12.08
Prihlásený: 13.12.22
Príspevky: 1874
Témy: 96
Bydlisko: Bratislava,...
Príspevok NapísalOffline : 03.04.2014 1:11

Ten zapis je zhruba ekvivalentny tomuto:
Kód:
class Temporary extends TimerTask {
    @Override
    public void run() {
        // your code here //
    }
    Temporary() {
        super();
    }
}

timer.schedule(new Temporary());


Pouziva sa najma vtedy, ked mas nejaku class-u ktora ti robi vsetko co ma, ale potrebujes v nej jednorazovo zmenit nejaku metodu. Vtedy nema zmysel pomenovavat takto pozmenenu class-u, takze moze ostat anonymna. Ine pouzitie je na simulaciu anonymnych funkcii (lambda funkcie), kedze Java ich dostala az nedavno vo verzii 8. Anonymne funkcie sa v roznych jazykoch zvyknu pouzivat vtedy, ked potrebujes predat funkciu ako argument k inej funkcii a ta funkcia, ktoru predavas ako argument sa nevola nikde inde (tj. nema zmysel ju ukladat / pomenuvat). Vacsinou pri robeni roznych callback-ov, ako napr. pri Timer-och, Event Listener-och apod.







_________________
~Listen to your brain, not your heart~
NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot)
NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI)
Offline

Užívateľ
Užívateľ
JAVA syntax - kod v {} pri vytvarani objektu?

Registrovaný: 11.02.09
Prihlásený: 28.03.23
Príspevky: 2208
Témy: 145
Bydlisko: Liptovský M...
Príspevok Napísal autor témyOffline : 03.04.2014 11:25

Aha, a co robi ta metoda: temporary () { super();}. Spusta konstruktor nadradenej triedy TimerTask?







_________________
"Only a warrior chooses pacifism, others are condemned to it."
- unknown author
Offline

Užívateľ
Užívateľ
JAVA syntax - kod v {} pri vytvarani objektu?

Registrovaný: 27.12.08
Prihlásený: 13.12.22
Príspevky: 1874
Témy: 96
Bydlisko: Bratislava,...
Príspevok NapísalOffline : 03.04.2014 15:02

hej.. (teda v principe naznacujem ze s konstruktorom sa nic nestane, neviem z hlavy ci v Jave musi mat podtrieda vlastny konstruktor alebo nie)

v principe ide o to, ze pocas vytvorenia objektu si ho mozes "on-the-fly" trocha pozmenit (upravit mu jednu / viac funkcii) tak aby ti vyhovoval.. a tieto zmeny funguju uplne rovnako ako keby si si z toho objektu vytvoril extended class-u, a zapisal do tych kuceravych zatvoriek jej telo, vytvoril objekt tej extended class-y, priradil ho do referencie typu nadradenej class a zabudol na to, ako si tu rozsirenu class povodne pomenoval.







_________________
~Listen to your brain, not your heart~
NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot)
NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI)
Offline

Užívateľ
Užívateľ
JAVA syntax - kod v {} pri vytvarani objektu?

Registrovaný: 11.02.09
Prihlásený: 28.03.23
Príspevky: 2208
Témy: 145
Bydlisko: Liptovský M...
Príspevok Napísal autor témyOffline : 03.04.2014 19:23

A co keby to tam nebolo a bola by tam len metoda run?

btw. ak nema podtrieda vlastny konstruktor tak sa automaticky vola konstruktor nadradenej triedy - niekde som to cital.







_________________
"Only a warrior chooses pacifism, others are condemned to it."
- unknown author
Offline

Užívateľ
Užívateľ
JAVA syntax - kod v {} pri vytvarani objektu?

Registrovaný: 15.01.07
Prihlásený: 23.09.15
Príspevky: 186
Témy: 3
Bydlisko: ZV/BA
Príspevok NapísalOffline : 13.04.2014 4:37

keby si tam strelil len telo metody ako objekt donutra, asi by to nebolo velmi cool, nie? telo metody nemoze byt objekt samo o sebe
IBA AK
nahodou nepouzivas java 8cku a ako uz spominal kolega vyssie, funcionalne interfaces ako Runnable sa daju uz pouzivat na lambda vyrazy a teda je uz mozne napchat cisto anonymnu metodu do tela metody (zda sa, ze oracle ide pomalicky tahat javu kusok k funkcionalnemu programovaniu)







_________________
nb: Lenovo Thinkpad E520 (starsi pan uz), Fedora 20 / Win7 dualboot
" 1000.times { puts "I will not spam on the boards" } "
Odpovedať na tému [ Príspevkov: 6 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. pomoc pri vytvarani fora

v Redakčné systémy

4

579

10.12.2006 16:30

KillerSVK Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. HDD: problem pri vytvarani particie

v Pevné disky a radiče

3

540

07.03.2009 11:53

McDog Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chyba pri vytvarani Google konta

v Smartfóny a tablety

1

356

14.03.2012 22:35

Qpkqkma Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Problem pri vytvarani nahladov obrazka

v PHP, ASP

0

464

17.04.2010 13:18

newboy1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP: Kodovanie pri vytvarani .csv

v PHP, ASP

2

610

22.08.2011 10:36

camo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. sass - error pri kompilacii (syntax)

v HTML, XHTML, XML, CSS

3

490

29.08.2017 21:18

17mark Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. kód chyby 0x80070570 pri instal win7

v Operačné systémy Microsoft

6

1501

31.08.2012 11:18

zentin Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pri výpise z datzabázy mi nevypíše celý php kód

v PHP, ASP

2

464

13.04.2009 18:39

Unlink Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java - kompilovanie - pomoc pri hľadaní chýb

v Assembler, C, C++, Pascal, Java

5

1133

13.04.2008 21:19

m@-nX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. kniha o vytvárani firewallu

v Bezpečnosť a firewally

0

405

26.07.2012 19:55

FBerente Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [Java] Problém s kódovaním pri zasielaní do MySQL

v Assembler, C, C++, Pascal, Java

0

313

21.09.2011 18:21

ViVe®s Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zabezpečenie vonkajšieho objektu

v Ostatné

6

705

17.01.2019 13:48

LukIneskoNR Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zafixovanie objektu na stránke

v HTML, XHTML, XML, CSS

5

559

22.01.2011 16:58

davider137 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Rozdiel medzi Java Standard a Java EE

v Assembler, C, C++, Pascal, Java

1

845

02.04.2014 12:41

XOLOO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. dobre java navody a nova tema JAVA

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Assembler, C, C++, Pascal, Java

35

5441

09.03.2009 17:14

tlacitko Enter Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. browser game - casova slucka objektu

v JavaScript, VBScript, Ajax

1

541

08.03.2016 15:41

killer Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra