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

Reply via email to