[ Príspevkov: 6 ] 
AutorSpráva
Offline

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

Registrovaný: 11.02.09
Prihlásený: 15.01.25
Príspevky: 2208
Témy: 145 | 145
Bydlisko: Liptovský M...

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 | 96
Bydlisko: Bratislava,...

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ý: 15.01.25
Príspevky: 2208
Témy: 145 | 145
Bydlisko: Liptovský M...
Napísal autor témyOffline : 03.04.2014 11:25 | JAVA syntax - kod v {} pri vytvarani objektu?

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 | 96
Bydlisko: Bratislava,...

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ý: 15.01.25
Príspevky: 2208
Témy: 145 | 145
Bydlisko: Liptovský M...
Napísal autor témyOffline : 03.04.2014 19:23 | JAVA syntax - kod v {} pri vytvarani objektu?

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 | 3
Bydlisko: ZV/BA

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" } "
 [ Príspevkov: 6 ] 


JAVA syntax - kod v {} pri vytvarani objektu?



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

637

10.12.2006 16:30

KillerSVK

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

PHP: Kodovanie pri vytvarani .csv

v PHP, ASP

2

649

22.08.2011 10:36

camo

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

HDD: problem pri vytvarani particie

v Pevné disky a radiče

3

582

07.03.2009 11:53

McDog

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

Chyba pri vytvarani Google konta

v Smartfóny a tablety

1

404

14.03.2012 22:35

Qpkqkma

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

Problem pri vytvarani nahladov obrazka

v PHP, ASP

0

499

17.04.2010 13:18

newboy1

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

sass - error pri kompilacii (syntax)

v HTML, XHTML, XML, CSS

3

567

29.08.2017 21:18

17mark

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

1547

31.08.2012 11:18

zentin

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

501

13.04.2009 18:39

Unlink

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

1292

13.04.2008 21:19

m@-nX

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

kniha o vytvárani firewallu

v Bezpečnosť a firewally

0

442

26.07.2012 19:55

FBerente

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

348

21.09.2011 18:21

ViVe®s

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

Zabezpečenie vonkajšieho objektu

v Ostatné

6

750

17.01.2019 13:48

LukIneskoNR

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

zafixovanie objektu na stránke

v HTML, XHTML, XML, CSS

5

607

22.01.2011 16:58

davider137

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

922

02.04.2014 12:41

XOLOO

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

5596

09.03.2009 17:14

tlacitko Enter

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

browser game - casova slucka objektu

v JavaScript, VBScript, Ajax

1

599

08.03.2016 15:41

killer



© 2005 - 2025 PCforum, edited by JanoF