Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Dobijanje reference na objekat pozivaoc

[es] :: Java :: Dobijanje reference na objekat pozivaoc

Strane: 1 2

[ Pregleda: 7388 | Odgovora: 22 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anon315

Član broj: 315
Poruke: 1657
*.adsl-1.sezampro.yu.



+13 Profil

icon Dobijanje reference na objekat pozivaoc05.06.2007. u 19:55 - pre 205 meseci
Mozda previse mastam, ali me ipak zanima da li postoji nacin da se u telu metode dobije referenca na objekat koji je pozvao metodu, bez da se eksplicitno predaje this, kao argument metode?
 
Odgovor na temu

nemnesic
nemnesic
Software Developer
Vranje Florida

Moderator
Član broj: 44355
Poruke: 802
*.com
Via: [es] mailing liste



+64 Profil

icon Re: Dobijanje reference na objekat pozivaoc05.06.2007. u 20:53 - pre 205 meseci
ne verujem da mozes, ali...negde sam cuo / procitao da sta ako bacis
exception i posle uhvatis caller name?
Throwable.getStackTrace()
i nekako to parsujes i nadjes ko te je zvao....

my 2c
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.adsl-1.sezampro.yu.



+13 Profil

icon Re: Dobijanje reference na objekat pozivaoc05.06.2007. u 21:19 - pre 205 meseci
Hehe, ali ne treba mi samo info ko me je zvao, vec da nesto radim sa njim :)
 
Odgovor na temu

nemnesic
nemnesic
Software Developer
Vranje Florida

Moderator
Član broj: 44355
Poruke: 802
*.com
Via: [es] mailing liste



+64 Profil

icon Re: Dobijanje reference na objekat pozivaoc05.06.2007. u 21:24 - pre 205 meseci
hmmm...
jel mozes tu da iskoristis arch4j?
znaci nadjes ko te je zvao...a pre toga napravis template sa arch4j...i
onda samo zammenis ime...hmmm...mozda ja mastam..:)
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Dobijanje reference na objekat pozivaoc05.06.2007. u 21:28 - pre 205 meseci
Poz,

nemnesic, jesi li videp PP koju sam ti poslao?
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.adsl-1.sezampro.yu.



+13 Profil

icon Re: Dobijanje reference na objekat pozivaoc05.06.2007. u 21:37 - pre 205 meseci
Citat:
nemnesic: hmmm...
jel mozes tu da iskoristis arch4j?
znaci nadjes ko te je zvao...a pre toga napravis template sa arch4j...i
onda samo zammenis ime...hmmm...mozda ja mastam..:)


Hm, nisam cuo za to, pogledacu...
 
Odgovor na temu

uranium
Beograd

Član broj: 60097
Poruke: 543
*.eunet.yu.

Jabber: uranium@elitesecurity.org
ICQ: 324386953


+5 Profil

icon Re: Dobijanje reference na objekat pozivaoc06.06.2007. u 05:03 - pre 205 meseci
Da li bi neko bio ljubazan da objasni o čemu se ovde radi?

Ako imamo neki metod f(), on mora biti metod neke klase recimo A.
I sad ako je x instanca neke klase B (podklasa klase A) prilikom poziva x.f() unutar tela metode f() će važiti this == x i sa this možemo da radimo šta nam je volja... Jasno je da this nije eksplicitno prosleđen...

Am I missing something here?

[Ovu poruku je menjao uranium dana 06.06.2007. u 06:33 GMT+1]
Attempt all the problems. Those you can do, don't do. Do the ones you cannot.
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.adsl-1.sezampro.yu.



+13 Profil

icon Re: Dobijanje reference na objekat pozivaoc06.06.2007. u 08:35 - pre 205 meseci
Niko nije rekao da je B podklasa A, sta god ti to znacilo..

Code:

public class A {

    // ...
    
    public void someMethodOfA() {
        B b = new B();
        b.someMethodOfB();
    }

    public void someOtherMethodOfA() {
        // do something
    }

}

public class B {

    // ...
    
    public void someMethodOfB() { // nema argumenta tipa A
        // Ovde hocu da pozovem someOtherMethodOfA od instance klase A koja je pozvala ovu metodu someMethodOfB
    }

}


Nadam se da ti je sada jasnije..
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9506
*.dip0.t-ipconnect.de.



+10254 Profil

icon Re: Dobijanje reference na objekat pozivaoc06.06.2007. u 08:38 - pre 205 meseci
@Uranium Tvoj post nema veze sa osnovnim pitanjem u temi.

@Vanja Jel ti je tema više kao "intelekualna rasprava" ili imaš konkretan problem ?
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.antegra.com.



+13 Profil

icon Re: Dobijanje reference na objekat pozivaoc06.06.2007. u 09:18 - pre 205 meseci
Intelektualna
 
Odgovor na temu

Black
Belgrade

Član broj: 4199
Poruke: 71
82.117.206.*



Profil

icon Re: Dobijanje reference na objekat pozivaoc06.06.2007. u 13:24 - pre 205 meseci
Citat:
Vanja Petreski: Intelektualna


Ccc, ti si bas dokon
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.antegra.com.



+13 Profil

icon Re: Dobijanje reference na objekat pozivaoc06.06.2007. u 13:35 - pre 205 meseci
Ma ne bi verovao koliko ;)

Salu na stranu, naleteo sam u jednom programu na gomilu predavanje this-a metodama upravo iz pomenutog razloga, pa mi se rodilo pitanje..
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9506
*.dip0.t-ipconnect.de.



+10254 Profil

icon Re: Dobijanje reference na objekat pozivaoc07.06.2007. u 09:15 - pre 205 meseci
Nisam o tome nikad razmišljao. Ili predam this, ili ako to ima smisla napravim od nečega singleton ili odmah popunim neku public static refernecu. Zavisi od slučaja do slučaja.
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

rj444
Radomir Jakovljevic
Beograd

Član broj: 48212
Poruke: 354
147.91.1.*



Profil

icon Re: Dobijanje reference na objekat pozivaoc08.06.2007. u 12:35 - pre 205 meseci
Posto je ovo akademska rasprava pokusacu da dam svoje vidjenje problema.

Moje misljenje je da to ne moze da se uradi koriscenjem trenutne implementacije programskog jezika Java. Bar ne moze da se uradi elegantno i efikasno da bi imalo vise smisla od prosledjivanja reference this.

U jeziku Java bi mogla da se definise referenca, nazovimo je caller poput this. Ta referenca bi dobijala vrednost u runtime-u pri kreiranju konteksta poziva metode (poput predavanja stvarnih argumenata). To bi bio posao za JVM ili bi se to moglo odraditi pomocu nekakvog glue koda koji bi kompajler generisao, a koji bi bio smesten pre prve naredbe metode.

Medjutim cini mi se da ovakvo resenje ne bi bilo dovoljno efikasno zbog povecanja bajt koda ili zbog usporavanja izvrsenja usled odredjivanja adrese caller objekta. Takodje javlja se problem prepoznavanja klase objekta caller. Tu bi moglo da dodje do bacanja izuzetka ClassCastException sto bi zahtevalo da se svako koriscenje reference caller zastiti try catch blokom. To bi dosta zamaglilo kod metode.
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9506
..yu.220.247.194.in-addr.arpa.



+10254 Profil

icon Re: Dobijanje reference na objekat pozivaoc11.06.2007. u 08:52 - pre 205 meseci
Sasvim. Nemojmo smetnuti s' uma i konkurentno izvođenje toka programa. I ako, na primer, metod nije deklarisan kao synchronized već je otvoren za multuthread izvršavanje, u istom trenutku može biti više pozivnih klasa. Šta onda ?
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.antegra.com.



+13 Profil

icon Re: Dobijanje reference na objekat pozivaoc11.06.2007. u 10:53 - pre 205 meseci
E da, to je dobro pitanje!
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.paws.umds.ac.uk.

Sajt: dejan.lekic.org


+2 Profil

icon Re: Dobijanje reference na objekat pozivaoc11.06.2007. u 13:59 - pre 205 meseci
Ok kakvom metodu se radi? Statickom? Ako ja dobro razumem pitanje onda sam malo zbunjen, jer ako nije staticki onda ti je objekat koji poziva metod uvek poznat (jer ces uvek pozivati metod sa objekat.metod() ). Ako se radi o statickom metodu, onda moras da predas this ako zelis da znas koji objekat ga je pozvao.

Pade mi na pamet nesto... Jedini nacin da se ovo odradi je najverovatnije da se koristi JAVA Debugging API. Pomocu njega vrlo verovatno mozes dobiti referencu na objekat koji poziva metod. Ne secam se kako, ali mozes naci u dokumentaciji. :)
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.adsl-1.sezampro.yu.



+13 Profil

icon Re: Dobijanje reference na objekat pozivaoc11.06.2007. u 16:55 - pre 205 meseci
Citat:
leka: Ok kakvom metodu se radi? Statickom? Ako ja dobro razumem pitanje onda sam malo zbunjen, jer ako nije staticki onda ti je objekat koji poziva metod uvek poznat (jer ces uvek pozivati metod sa objekat.metod() ). Ako se radi o statickom metodu, onda moras da predas this ako zelis da znas koji objekat ga je pozvao.


Ne radi se o statickom metodu. Pa da, ali ovde se radi o tome "odakle ti je poznat". Treba da ti bude poznat u okviru koda pozvane metode, a ne iz koda koji pozvao metodu pomenutog objekta.

Citat:

Pade mi na pamet nesto... Jedini nacin da se ovo odradi je najverovatnije da se koristi JAVA Debugging API. Pomocu njega vrlo verovatno mozes dobiti referencu na objekat koji poziva metod. Ne secam se kako, ali mozes naci u dokumentaciji. :)


Posto je pitanje teorijskog tipa, pogledacu ako postane prakticnog tipa :)))
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.xs4all.nl.

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Dobijanje reference na objekat pozivaoc11.06.2007. u 18:08 - pre 205 meseci
Šta bi ti tačno da dobiješ?

Tvoj primer (http://www.elitesecurity.org/p1598503) može da se uradi bez gimnastike koju si predložio. Proslediš klasi B ne this, već referencu na privatnu instancu nekog unapred definisanog interfejsa.

Onda lepo zoveš u interfejsu do mile volje metode koje hoćeš, a klasa A nema uslov da nasleđuje išta posebno.

Code:

public interface Foo {
  public void method();
}

public class A {
  public void foo(B b) {
    b.bar(new Foo() {
      public void method()  {
        foo2(); // Ili šta ti već treba.
      }
    });
  }

  public void foo2() {}
}

public class B {
  public void bar(Foo f) {
    f.method();
  }}



f


[Ovu poruku je menjao filmil dana 11.06.2007. u 19:43 GMT+1]
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.adsl-1.sezampro.yu.



+13 Profil

icon Re: Dobijanje reference na objekat pozivaoc11.06.2007. u 19:14 - pre 205 meseci
Cao Filipe, dugo te nije bilo... :)

Citat:
Šta bi ti tačno da dobiješ?


Nista specijalno, u tome je stos ;)

Ako uzmemo u obzir da je ovo teorijska rasprava i da je poenta bila da "kod sam auto magicno nekako shvati ispod haube ko ga je pozvao" odnosno da ne mora da se predaje nista, onda mozemo da kazemo da je tvoje resenje znatno kompleksnije od polaznog, "problematicnog" koda ovog tipa:

Code:

public class A {
  public void foo(B b) {
    b.bar(this);
  }
  public void foo2() {}
}

public class B {
  public void bar(A a) {
    a.foo2();
  }
}
 
Odgovor na temu

[es] :: Java :: Dobijanje reference na objekat pozivaoc

Strane: 1 2

[ Pregleda: 7388 | Odgovora: 22 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.