Derek,
With the upcoming release of 2.7.2, you can update all this classOf[T] stuff
to use scala.reflect.Manifest[T], which handles all that stuff for you
almost automagically.
I've been meaning to blog about this, but haven't found the time. The short
example is:
def find[A](id: Any)(implicit m: scala.reflect.Manifest[A]) =
em.find[A](m.erasure, id).asInstanceOf[A]
Which can be invoked as:
val user = find[User](userId)
The compiler will fill in the implicit Manifest parameter for you. Manifest
represents a Scala type. You can test two Manifests for subtype and
supertype relationships. You can also call "erasure" on a Manifest to get
the Java Class corresponding to the runtime erasure of that type.
Manifests are undocumented and experimental, so proceed with caution.
Eventually they'll be the backbone of a native Scala reflection API (yay!)
--j
On Tue, Oct 14, 2008 at 6:13 PM, Derek Chen-Becker <[EMAIL PROTECTED]>wrote:
> You can just do Model.find(classOf[User], userId) and the type on the
> method will be inferred. Any time you see a Class[A] parameter, it wants the
> result of a classOf[...].
>
> Derek
>
> On Tue, Oct 14, 2008 at 5:52 PM, Charles F. Munat <[EMAIL PROTECTED]> wrote:
>
>>
>> A question from the JPADemo...
>>
>> How does one use this:
>>
>> def find[A](clazz: Class[A], id: Any) =
>> em.find[A](clazz, id).asInstanceOf[A]
>>
>> If I have a User model and I want to use find on the EntityManager, what
>> goes where the *** is below:
>>
>> val user = Model.find[User]( ***, userId)
>>
>> Thanks,
>>
>> Chas.
>>
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Lift" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---