2011-11-09 23 views
9

Scala'da serileştirme yapmak istiyorum - sjson ve Serializable ek açıklamalarını beğendim - ancak, bunlara 1 ana engelle başa çıkmayı başaramadım - Type Erasure ve Kütüphanelerde Jenerikler.Kolay Scala Serileştirme?

Örneğin, Graph for Scala Kitaplık alın. Bunu kodumda kullanıyorum ve daha sonra analiz için kodum boyunca diske grafikler tutan birkaç nesne yazmak istiyorum. Bununla birlikte, birçok kez düğüm ve kenar türleri, sahip olduğum başka bir sınıfın genel türü argümanlarında kapsüllenir. Kütüphanenin kendisini değiştirmek için kütüphanenin kendisini değiştirmeden ya da çok sayıda Type Classes ithal ederek kodumu kirletmeden (bu şekilde bir nesnenin nasıl göründüğüne göre serileştirme zaten tamamen tatminsizdir ...) bu sınıfları nasıl düzgün bir şekilde serileştirebilirim?

Örnek,

class Container[N](val g: Graph[N,DiEdge]) { 
    ... 
} 

// in another file 
def myMethod[N](container: Container[N]): Unit = { 
    <serialize container somehow here> 
} 

cevap

5

Bulgularımı bildirmek için, Java'nın XStream olağanüstü bir işi yapıyor - herhangi bir şey, her şey, jenerik veya başka bir şekilde, herhangi bir ek girdi olmadan otomatik olarak serileştirilebilir. Seri hale getirme işlemini hızlı ve işe yaramaz bir yolla yapmanız gerekirse, XStream budur! Bununla birlikte, çıkış XML'inin kendi girişiniz olmadan özellikle özlü olmayacağını belirtmek gerekir. Örneğin, Scala's HashMap tarafından kullanılan her bellek bloğu, çoğu bir şey içermese bile kaydedilecektir!

2

sen Scala için Grafikler kullanarak ve JSON sizin seri hale biçimi ise, doğrudan graph-json kullanabilirsiniz.

İşte code and the doc.

+0

Evet, kütüphanenin farkındayım, ancak önemli nokta, Grafiklerin çok daha büyük bir bulmacanın bir parçası olduğudur! – duckworthd