I guess that's a bit misleading. new Foo { ... } gets it's own .class file too, but at the level of types, it doesn't get it's own type, hence the need for reflection.
On Tue, Dec 2, 2008 at 12:51 PM, Jorge Ortiz <[EMAIL PROTECTED]> wrote: > class Foo > > // type is singleton type Bar.type > object Bar extends Foo { > def exc = (new Exception).printStackTrace > } > > // type is structural type Foo{def exc: Unit} > val Baz = new Foo { > def exc = (new Exception).printStackTrace > } > > // compare: > Bar.exc > Baz.exc > > Singleton types get their own .class file. Structural types use reflection. > > --j > > > On Tue, Dec 2, 2008 at 12:33 PM, Alex Boisvert <[EMAIL PROTECTED]>wrote: > >> On Tue, Dec 2, 2008 at 10:24 AM, Jorge Ortiz <[EMAIL PROTECTED]>wrote: >> >>> If you add (non-overriden) fields to a val, they'll always be invoked via >>> reflection, which takes a performance hit. Objects, on the other hand, >>> define their own class so reflection isn't necessary. >> >> >> Can you give an example? I can't picture this from your description. >> >> alex >> >> >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---