final class

Luboš Svoboda svoboda.lubos na gmail.com
Úterý Říjen 14 09:49:10 CEST 2008


Díky všem za reakce.
Ještě na vysvětlenou - potřebuju překrýt metodu v portlet třídě, která
je definována jako final. Autoři třídy si samozřejmě nepřáli, aby do
ni někdo zasahoval, nicméně nemysleli na všechno. A protože ten
portlet je vcelku rozsáhlý a dekompilace není vždy úplně 100%, trochu
se tomu bráním, stejně jako vytvoření úplně novýho portletu. Z důvodu
portálovýho kontejneru také nechci použít rozšíření ala Groovy,
AspectJ, ...

Luba

A protože je celkem


On Tue, Oct 14, 2008 at 09:31, Oto Buchta <tapik na buchtovi.cz> wrote:
> No neda mi to, abych si trosku neprisadil ;-)
> a) pri pouziti dynamickych vlastnosti Javy by to jit mohlo (napr zminene Groovy)
> b) kdyz mas .class, neni nic jednodussiho, nez JAD, perl -e "s/final / /g" file.java; javac file.java
> c) napis si vlastni implementaci a podhod ji misto te stavajici
> d) ono to final tam z nejakeho duvodu asi bude, ze? Takze pokud presne nevidis
> do kodu, V ZADNEM PRIPADE bych to nedelal, protoze muzes nadelat vic skody nez
>  uzitku.
> e) otazka vubec zni: proc? Predpokladam, ze volas nejakou metodu, ktere
> potrebujes predhodit tridu B, ona zere jenom tridu A, takze chces logicky
> B extends A. opravdu se zamysli, jestli je to to prave orechove.
>
> Oto 'tapik' Buchta
>
> On Mon, Oct 13, 2008 at 11:20:14PM +0200, Luboš Svoboda wrote:
>> Zdravím,
>> potřeboval bych rozšířit třídu, která je definována jako final.
>> Samozřejmě vím, že to "normálně" nejde, ale nenašel by se nějaký
>> způsob jak to zařídit? Mám k dispozici pouze .class, napadlo mně
>> jestli by nešel nějak upravit bytecode, nebo něco podobného. Nemáte s
>> nečím podobnou zkušenost?
>> Díky Luba
>> PS: debatu proč rozšiřovat final třídy nechme stranou, mám proto dobrý
>> důvod  :-)
>


Další informace o konferenci Konference