SORU
1 HAZİRAN 2011, ÇARŞAMBA


Tür parametresi için Scala classOf

Nesne güncelleştirmeleri için genel bir yöntem / java scala oluşturmak için çalışıyorum ama bir tür parametresi için sınıf alamıyorum.

İşte benim kod:

object WorkUnitController extends Controller {     
 def updateObject[T](toUpdate: T, body: JsonObject){
  val source = gson.fromJson(body, classOf[T]);
  ...
 }
}

Olsun hata

sınıf türü gerekli ama T bulundu

Yapamazsın java biliyorum ama bu mümkün scala hiç?

Teşekkürler!

CEVAP
1 HAZİRAN 2011, ÇARŞAMBA


NedeniyleApaçıkkaldırılmış(Scala 2.10.0 beri) bu güncellenmiş cevaptır

import scala.reflect.ClassTag
import scala.reflect._

object WorkUnitController extends Controller {
  def updateObject[T: ClassTag](toUpdate: T, body: JsonObject){
    val source = gson.fromJson(body, classTag[T].runtimeClass)
    ???
  }
}

ClassManifestyerine ClassTag kullanmalısınız ve .erasure yerine 7**

Orijinal cevap Evet, bildirimleri kullanarak bunu yapabilirsiniz:

object WorkUnitController extends Controller {     
 def updateObject[T: ClassManifest](toUpdate: T, body: JsonObject){
  val source = gson.fromJson(body, classManifest[T].erasure);
  ...
 }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Rachel Raum

    Rachel Raum

    10 EYLÜL 2007
  • TheRightTire

    TheRightTire

    14 EKİM 2009
  • WOSU Public Media

    WOSU Public

    23 AĞUSTOS 2007