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
-~----------~----~----~----~------~----~------~--~---

Reply via email to