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

Interfejsi i key

[es] :: Java :: Interfejsi i key

[ Pregleda: 2107 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

protech_v2
protech_v2
Novi Sad

Član broj: 12426
Poruke: 169
*.neobee.net.



+12 Profil

icon Interfejsi i key24.05.2005. u 19:23 - pre 230 meseci
Ako imam interfejs za autentifikaciju kojeg implementiraju razlicite klase (recimo jedna za proveru preko baze, jedna preko xml fajla itd.), i ciju metodu pokrecem iz beana koji cita iz forme user/pass kako da kazem tom beanu da procita koju od tih klasa da koristi iz neke konstante?

Napravio sam klasu koja implementira ServletContextListener interfejs pa se pokrece pre JSF-a i pokrece sledecu naredbu (pratio sam uputstvo iz knjige):

servletContext.setAttribute(Constants.AUTH_INTERFACE_KEY, new AuthVsXML());

U Constants onda imam :

public String AUTH_INTERFACE_KEY = "AuthInterface";

ali ne znam kako to da iskoristim, tj. kako da u beanu kazem da koristi onu klasu koja je u tom key-u?

P.S. Izvinjavam se zbog dupliranja poruke sa JavaSvet.net foruma, ali tamo je malo tiho, cini mi se
 
Odgovor na temu

me-tuzalem
mensur tuzalemovic
novi pazar

Član broj: 25730
Poruke: 116
*.nat-pool.bgd.sbb.co.yu.



Profil

icon Re: Interfejsi i key24.05.2005. u 20:11 - pre 230 meseci
Malo mi tvoje pitanje djeluje konfuzno, ali bi ovo moglo da bude odgovor.
Treba da imaš klasu (pročitaj nešto o Factory patternu), koja zna na osnovu nekog parametra (...ili nečeg drugog), šta se instancira.
Npr.:
Code:

class MyFactory{
public static MyInterface getInstance(int parametar){
switch(parametar){
case 0:
 return new Klasa1();
case 1:
return  new Klasa2();

....
}}}

gdje Klasa1, Klasa2 ... implementiraju MyInterface

A ako negdje koristiš imena klasa(nije mi pitanje baš najjasnije), onda treba da se obratiš ClassLoaderu, ali o tom potom, ako ti treba.
 
Odgovor na temu

protech_v2
protech_v2
Novi Sad

Član broj: 12426
Poruke: 169
*.neobee.net.



+12 Profil

icon Re: Interfejsi i key24.05.2005. u 21:43 - pre 230 meseci
Hvala na odgovoru, ovo je bas elegantno resenje za slicne probleme koje mi nije palo na pamet. Treba jos puno da ucim :)

Doduse, mana je sto onda svaku realizovanu klasu treba ubaciti u switch.
Iz knjige (iako se taj deo ne detaljise, vec bi ocito trebalo da radi kako je napisano) sam stekao utisak da mogu u nekom inicijalizatoru (tj. posto je u pitanju application scope - implementaciji ServletContextListener-a), da napisem naredbu tipa:

servletContext.setAttribute(Constants.NEKI_KEY, new ImeKlaseKojuHocudaKoristim());

i da u Constants imam pridruzen neki string tom key-u npr:

public final static String NEKI_KEY = "neki_string";

i posle tamo gde se poziva metoda te neke klase napisem:

neki_string.metoda();

a on ce sam znati na koju se klasu to odnosi iz tog key-a.

Ovo ne radi, pa sam pretpostavio da samo gresim negde u sintaksi ili treba preko neke posebne metode procitati taj key.

Ovako onda nema potrebe za nikakvim menjanjem koda nakon jos neke implementacije interfejsa, vec samo u inicijalizatoru kazem koja hocu da se koristi po njenom imenu





 
Odgovor na temu

me-tuzalem
mensur tuzalemovic
novi pazar

Član broj: 25730
Poruke: 116
*.nat-pool.bgd.sbb.co.yu.



Profil

icon Re: Interfejsi i key25.05.2005. u 10:01 - pre 230 meseci
Pazi, ne možeš da imaš

Citat:
protech_v2:

public final static String NEKI_KEY = "neki_string";

i posle tamo gde se poziva metoda te neke klase napisem:

neki_string.metoda();


već moraš da instanciraš objekat neke klase. Ako ti je "neki_string" ime klase onda možeš to ovako:

Code:


    Class klasa = null;
    klasa = Class.forName("neki_string");// puno ime klase tipa package.klasa
    Object obj = klasa.newInstance();
    MyInterface mi = (MyInterface)obj;//casting samo radi primera, mogle je spojeno sa prethodnom instrukcijom
    

Tada mi predstavlja referencu na tvoj objekat i onda možeš da kažeš

Code:

mi.metoda();


Ovo je elegantnije rešenje od onoga sa swtich naredbom, ali nisam hteo u prethodnom odgovoru da ti komplikujem.
 
Odgovor na temu

protech_v2
protech_v2
Novi Sad

Član broj: 12426
Poruke: 169
*.neobee.net.



+12 Profil

icon Re: Interfejsi i key26.05.2005. u 00:08 - pre 230 meseci
Eee, bas ono sto mi treba :) Nisam znao za "forName". Hvala puno na korisnim odgovorima!
 
Odgovor na temu

[es] :: Java :: Interfejsi i key

[ Pregleda: 2107 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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