On Tuesday 24 of January 2006 08:54, Pavel Kolesnikov wrote: > On 24/01/06, Šilhánek Miloš <[EMAIL PROTECTED]> wrote: > > Kompilátor asi inlining neudělá, ale runtime zjistí, že nemusí dělat > > dynamický binding. Pozná to podle toho, že třída nemá podtřídu, kde by > > byla metoda překryta A vnitřek metody je dostatečně krátký. > > > > Inlining lze podpořit deklaraci metody jako final. > > To si ale musíte rozmyslet napřed, protože v budoucnu si znemožníte ze > > třídy dědění. > > Tady mam malou praktickou poznamku - problem je podle mne prave opacny. > > Pokud v budoucnu zjistite potrebu z vasi tridy dedit, proste vydate > novou verzi, > ktera uz ma deklaraci final odstranenu. V opacnem pripade, pokud zjistite, > ze deditelnost tridy nebyla az tak dobry napad, byste pozdejsim dodanim > sluvka final mohl rozbourat mnozstvi existujicich aplikaci. > > Tim ale samozrejme nenaznacuju, ze by vse melo byt deklarovano final :-)
No, mozna jsem uplne mimo misu, ale principialne v zadnem jazyce nemuze prekladac udelat inlinovat protected a public metodu, kdezto u private to udelat muze ;-) A staci na to trivialni preprocesor, ktery ma na inlining treba Idea. Totez plati pro runtime. A deklarace metody jako final v tom nema naprosto zadny vyznam. proste bud je metoda zvenku prostupna=>nesmi byt inlinovana metoda zvenku pristupna neni=>cokoli muze inlinovat Deklarovat metody jako final je zhuverilost, ktera mne osobne vadi i u Stringu (jednou jsem potreboval String owrapovat diky demenci jednoho API, ktere zralo jenom Stringy a ja tam potreboval dostat multijazycny "StringChooser". Skoda, ze CharSequence neni vice pouzivany...), a ktera by se mela delat co nejmene. Musite si byt setsakra jisti, ze ten final ma nejaky vyznam. -- Oto 'tapik' Buchta, [EMAIL PROTECTED] Senior Engineer, Systinet Corp, http://www.systinet.com