Scala harita için durum sınıfı
Eğer Scala durumda bir sınıf örneği, örneğin dönüştürmek iyi bir yolu varsa çok iyi biliyor
case class MyClass(param1: String, param2: String)
val x = MyClass("hello", "world")
Bir tür, örneğin bir eşleme içine
getCCParams(x) returns "param1" -> "hi", "param2" -> "3"
Herhangi bir durum için birinci sınıf değil, sadece önceden tanımlanmış olanlar çalışır. Dava sınıfı adı temel Ürün sınıfı sorguluyor bir yöntem yazarak, örneğin indirebiliriz buldum
def getCCName(caseobj: Product) = caseobj.productPrefix
getCCName(x) returns "MyClass"
Dava sınıfı alanlar için benzer bir çözüm ama iş arıyorum. Bir çözüm Java yansıma kullanmak zorunda diye tahmin ediyorum, ama eğer durum sınıfların temel uygulama değişirse, Scala, gelecekteki bir sürüm zorla bir şey yazmak istemem.
Şu anda Scala bir sunucu üzerinde çalışan ve protokolü ve tüm mesajlar ve istisnalar bu kadar güzel, kısa ve öz olarak durum sınıfları kullanarak, bu tanımlama için inşa ediyorum. Ama ben daha sonra herhangi bir istemci uygulaması için ileti katmanı kullanmak için göndermek için bir Java göster dönüştürülmeleri gerekiyor. Benim şu anki uygulaması her olayı sınıf için ayrı bir çeviri tanımlar, ama genel bir çözüm bulmak için iyi olurdu.
CEVAP
Bu çalışması gerekir:
def getCCParams(cc: AnyRef) =
(Map[String, Any]() /: cc.getClass.getDeclaredFields) {(a, f) =>
f.setAccessible(true)
a (f.getName -> f.get(cc))
}
Java özel durum sınıfı tanımlamak için...
Nasıl dava sınıfı scala bir Numaraland...
İçin Scala bir harita ters zarif yolu...
Nasıl özel yöntemleri, alanları veya i...
Güncelleme ve silme için HTTP durum ko...