genel tür parametresi ile bildirme yöntemi ve bu tür bir örneği döndürür. Ne istediğini çok yakınScala: Başka bir deyişle</p> <pre><code>public <T> T readValue(java.lang.String s, java.lang.Class<T> tClass) </code></pre> <p>, ben tip T sınıfını götüren bir yöntem bildirmek istiyorum: Scala aşağıdaki Java yöntemi beyanının eşdeğerdir Ne
10
A
cevap
24
I.:
def readValue[T:ClassTag](s:String):T = { val tClass = implicitly[ClassTag[T]].runtimeClass //implementation for different classes. }
kullanım Java biraz daha nettir:
val myDouble = readValue[Double]("1.0")
2
II.
trait ValueReader[T] { def readValue(s: String): T } def readValue[T: ValueReader](s: String): T = { val reader = implicitly[ValueReader[T]] reader.readValue(s) } implicit val doubleReader = new ValueReader[Double] { def readValue(s:String) = // implementation for Double }
İlgili konular
- 1. <Func <T, string>>
- 2. IQueryable <T> Nasıl Dönüştürülür <T>?
- 3. IEqualityComparer <T>
- 4. Statik nedir <T> List <T> methodName (Liste <? super T> giriş)
- 5. IList <T> .FindIndex (Int32, Predicate <T>)
- 6. <Func <T, object>>
- 7. Dinamik <T> için dinamik tip?
- 8. Bir List <T>
- 9. o Birimi <ispat edemezsin: bir listeden tüm <code>Unit -()</code> kaldırmak çalışırken <(T, U)
- 10. Sıralama <T>
- 11. 'System.Collections.Generic.List <T>' türünün 'System.Linq.IQueryable' <T> '
- 12. IList <T> IQueryable için <T>
- 13. Liste <T>
- 14. Set <T>
- 15. nasıl aşağıdaki yöntemi uygulayabilirsiniz, ben bir yapı <code>Vec3<T></code> var Rust
- 16. Func <T>() vs Func <T> .Invoke()
- 17. <T>
- 18. System.LINQ.Dynamic: Bir liste içine (<T> (veya <T> numaralı başka herhangi bir koleksiyon)
- 19. İçindeki eleman sayısı <5 in <a1 <0</ a1><T>
- 20. Moq framework Func <T,T>
- 21. IEnumerable <T> parametresi
- 22. Bir IEnumerable <t> veya IQueryable <t>'u bir EntitySet <t>'a nasıl yüklersiniz?
- 23. Web Api <T> Yöntem
- 24. Eşit yöntem System.Collections.Generic.List <T> ...?
- 25. <: <İş nasıl?
- 26. IEnumerable <T> için bir uzantı yöntemi tanımlayın ve IEnumerable <T> döndürür?
- 27. IEnumerable <IEnumerable <T>'den IEnumerable <T> alın
- 28. Listeye T eklenmesi <T> List '<T>' dinamik 've T' object 'olarak maskelenir?
- 29. Dinamik İfade Oluşturma <Func<T,Y>>
- 30. tipi 'T' <code>Concrete</code><code>Base</code> türeyen tip
Mükemmel, teşekkürler Arseniy ... o yüzden görünüşte 4 dakika içinde cevap kabul edebilir: Başka, daha karmaşık bir yol, (tip sınıfı) bazı kullanıcı tarafından sağlanan nesneye readValue uygulanmasını yansıtmak için o zaman yapacak. – Neil
Bir şey değil. Yöntemi uyguladıktan ve II cevabına baktığınızda, onu daha geniş ve modüler bulursunuz. –
@Neil, ClassTag'lar Scala'da bunu yapmanın deyimsel yoludur, ancak 'Class' nesnelerini doğrudan Java'da yaptığınız gibi iletebilirsiniz: read readValue [T] (s: String, cls: Class [ T]): T' - tanım, 'readValue (" 1.0 ", classOf [Double]) - kullanımı. Bu deyimsel değildir, ancak bazen yardımcı olabilir. –