Re: Generiky
Moravec Jan wrote: Dekuji za odpoved. Toho jsem se obaval, ze to nepujde. Myslite, abych udelal jeste verze metody specificke pro konkretni typy? Napr: public static K,V CacheServiceMBeanK,V createMBeanProxy( String objectName, ClassCacheServiceMBeanK,V interfaceClass ) throws ServiceLocatorException Problem je v to, ze toto ma stejny erasure jako ta puvodni metoda, takze to compiler neprelozi (vznikla by uplne identicka metoda). Jak spravne rikate, ty typy se kompilaci odmaznou... No asi se smirim s tema castama, neni to sice moc elegantni, ale co se da delat. Myslel jsem spis neco jako public static K,V CacheServiceMBeanK,V createMBeanProxy( String objectName, Class? extends CacheServiceMBean c1, ClassK c2, ClassV c3 ) Makub -- ~~ Supercomputing Center Brno Martin Kuba Institute of Computer Scienceemail: [EMAIL PROTECTED] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 -- smime.p7s Description: S/MIME Cryptographic Signature
Re: Generiky
Hledate marne, takhle to nejde, pri behu uz neexistuje informace o parametrizaci CacheServiceMBean, a tudiz ta metoda createMBeanProxy() nemuze vedet, jak je CacheServiceMBean parametrizovany. Pokud muzete zmenit tu createMBeanProxy(), pridejte ji argumenty pro specifikaci parametru. Makub Moravec Jan wrote: Ahoj, Uz mi z toho jde hlava kolem a nemohu nalezt spravnou syntaxy. Mam statickou metodu: public static T T createMBeanProxy( String objectName, ClassT interfaceClass ) Pokud ji volam pro ziskani MBeanu jednoduchych (neparametrizovatelnych) typu, napriklad BusinessRegisterServiceMBean busRegMBean = ServiceLocator.createMBeanProxy( neco, BusinessRegisterServiceMBean.class ); neni problem. Pokud vsak ten interface (interfaceClass) je slozitejsiho typu, napriklad chci vratit instanci typu CacheServiceMBeanLong, ManagedLString, pak nemohu prijit na to, jakym zpusobem toho dosahnout, abych se vyhnul castovani. To jest: Toto funguje, ale warning o castu CacheServiceMBean na CacheServiceMBeanLong, ManagedLString: CacheServiceMBeanLong, ManagedLString cacheMBean = (CacheServiceMBeanLong, ManagedLString) ServiceLocator.createMBeanProxy( config.get( neco, CacheServiceMBean.class ); Ja chci zapis bez castu, tj. neco jako: CacheServiceMBeanLong, ManagedLString cacheMBean = ServiceLocator.createMBeanProxy( config.get( neco, CacheServiceMBean*Long, ManagedLString.*class ); Coz mi kompilator nesezere (nelibi se mu ten zapis CacheServiceMBean*Long, ManagedLString.*class). Diky za nakopnuti. Honza -- ~~ Supercomputing Center Brno Martin Kuba Institute of Computer Scienceemail: [EMAIL PROTECTED] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 -- smime.p7s Description: S/MIME Cryptographic Signature
RE: Generiky
Dekuji za odpoved. Toho jsem se obaval, ze to nepujde. Myslite, abych udelal jeste verze metody specificke pro konkretni typy? Napr: public static K,V CacheServiceMBeanK,V createMBeanProxy( String objectName, ClassCacheServiceMBeanK,V interfaceClass ) throws ServiceLocatorException Problem je v to, ze toto ma stejny erasure jako ta puvodni metoda, takze to compiler neprelozi (vznikla by uplne identicka metoda). Jak spravne rikate, ty typy se kompilaci odmaznou... No asi se smirim s tema castama, neni to sice moc elegantni, ale co se da delat. H. -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Martin Kuba Sent: Wednesday, June 21, 2006 6:13 PM To: Java Subject: Re: Generiky Hledate marne, takhle to nejde, pri behu uz neexistuje informace o parametrizaci CacheServiceMBean, a tudiz ta metoda createMBeanProxy() nemuze vedet, jak je CacheServiceMBean parametrizovany. Pokud muzete zmenit tu createMBeanProxy(), pridejte ji argumenty pro specifikaci parametru. Makub Moravec Jan wrote: Ahoj, Uz mi z toho jde hlava kolem a nemohu nalezt spravnou syntaxy. Mam statickou metodu: public static T T createMBeanProxy( String objectName, ClassT interfaceClass ) Pokud ji volam pro ziskani MBeanu jednoduchych (neparametrizovatelnych) typu, napriklad BusinessRegisterServiceMBean busRegMBean = ServiceLocator.createMBeanProxy( neco, BusinessRegisterServiceMBean.class ); neni problem. Pokud vsak ten interface (interfaceClass) je slozitejsiho typu, napriklad chci vratit instanci typu CacheServiceMBeanLong, ManagedLString, pak nemohu prijit na to, jakym zpusobem toho dosahnout, abych se vyhnul castovani. To jest: Toto funguje, ale warning o castu CacheServiceMBean na CacheServiceMBeanLong, ManagedLString: CacheServiceMBeanLong, ManagedLString cacheMBean = (CacheServiceMBeanLong, ManagedLString) ServiceLocator.createMBeanProxy( config.get( neco, CacheServiceMBean.class ); Ja chci zapis bez castu, tj. neco jako: CacheServiceMBeanLong, ManagedLString cacheMBean = ServiceLocator.createMBeanProxy( config.get( neco, CacheServiceMBean*Long, ManagedLString.*class ); Coz mi kompilator nesezere (nelibi se mu ten zapis CacheServiceMBean*Long, ManagedLString.*class). Diky za nakopnuti. Honza -- ~~ Supercomputing Center Brno Martin Kuba Institute of Computer Scienceemail: [EMAIL PROTECTED] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 --