Giriş akışı Clojure öğesini gen-class
aracılığıyla genişleten bir sınıf oluşturmaya çalışıyorum. Ebeveyn sınıfının yöntemini çağırmak istersem, bunu nasıl yaparım?Clocure gen sınıfı yönteminde süper sınıf yöntemi nasıl çalıştırılır?
cevap
(doc gen-class)
Gönderen:
:exposes-methods {super-method-name exposed-name, ...}
It is sometimes necessary to call the superclass' implementation of an
overridden method. Those methods may be exposed and referred in
the new method implementation by a local name.
Yani, ebeveynin fooBar
yöntemini çağırmak edebilmek için, size Ardından uygulamaya
(ns my.custom.Foo
(:gen-class
; ...
:exposes-methods {fooBar parentFooBar}
; ...
))
söyleyebilirim fooBar
:
(defn -fooBar [this]
(combine-appropriately (.parentFooBar this)
other-stuff))
ns
formları tarafından sağlanan
:gen-class
tesisine ek olarak
, makro bir gen-class
yoktur.
Düzenleme içindeki yanıt ve ek bilgiler için teşekkürler. Eklenmesi. Çağırmada önemli bir ayrıntıdır. – Bill
Bu, asıl sorunuzun bir cevabı değildir, ancak InputStream'in bir sınıf yerine bir arabirim olduğunu düşünmenize izin verecek küçük bir kütüphaneye sahibim (böylece gen sınıfına ihtiyacınız yoktur). io.core.InputStreamable
'u yeniden tanımlamanıza ve özelleştirilmiş bir InputStream çıkarmanıza olanak veren io.core.InputStream
numaralı telefonu inceleyin. İhtiyaç duyduğunuz örnek alanlar, yalnızca reify
tarafından kapatılan yerliler olabilir.
İlginç bir fikir. Böyle bir şey hakkında düşünmüştüm, ama sonunda bunları Java'ya geri vermek istesem bir giriş akışı istiyorum. – Bill
Tüm nokta, bir giriş akışı almanızdır. Mantığınızı açıklayan bir InputStreamable yaratırsınız ve bunu AOTed Java sınıfı olan InputStream'e verirsiniz. Örneğin, (InputStream. (InputStreamable (oku ...) (atla ...))). – amalloy
@Bill Önceki yorumunuzda @ unuttunuz. Bence bu, bildirim almadığınız anlamına gelir; Şimdi ikinci bir bildirim alıyorsanız özür dilerim. – amalloy
- 1. clojure gen sınıfı varargs constructor
- 2. Süper yöntem nasıl aranır?
- 3. Bu sınıf yönteminde sınıf örneği nasıl oluşturulur?
- 4. Bir sınıf adı bilmeden Java sınıfı nasıl çalıştırılır
- 5. Clojure’ın Gen sınıfı ile nasıl statik yöntemler üretilir?
- 6. Değişken argümanlarla ES6 sınıfı süper()
- 7. java Generics - Çocuk sınıfı tipini ve süper sınıfı tanıyan çocuk aşırı yüklenmiş yöntem nasıl çağırılır
- 8. Taban sınıfı yöntemi takma
- 9. schemagen'in şemaya süper sınıf eklemesini engelliyor mu?
- 10. Yansıyan sınıf yönteminde parametre türü nasıl alınır?
- 11. sınıf nesnesinden sınıf sınıfı
- 12. Sınıf sınıfı Bildiren sınıf
- 13. Dinamik olarak bir sınıf yöntemi nasıl eklenir?
- 14. Süper sınıf bayt ve bytearray?
- 15. Süper sınıf üzerinden seri hale getirme/serileştirme
- 16. Test klasöründe ana sınıfı nasıl çalıştırılır?
- 17. Manifest dosyasında Ana Sınıf olmayan Jar'dan bir sınıf nasıl çalıştırılır
- 18. Java - Süper Sınıf Alanları Düzgün Olarak Değiştirilmiyor
- 19. gen sınıfı kullanılarak clojure makro ek açıklamaları oluşturmuyor
- 20. C + + Sınıfı Sınıf Üyesi Sınıfı
- 21. Soyut sınıf yöntemi - Çocuk sınıfı nesnesini somutlaştırmak için?
- 22. Bağımlılık enjeksiyonunda hançer2 kullanıldığında süper sınıf enjekte edebilir miyim?
- 23. Java'da süper alt sınıf değişkenini inherit in
- 24. Neden her viewDidLoad yönteminde [super viewDidLoad] kullanıyoruz?
- 25. Ek Açıklama Kod Gen JavaPoet
- 26. BufferedWriter sınıfı writeLine yöntemi
- 27. Arabirimde olmayan sınıf yöntemi
- 28. Uygulama, savaştan nasıl çalıştırılır?
- 29. Python 3, süper .__ del __()
- 30. Django modeli devralma: Mevcut süper sınıf
Bu eski bir sorudur, ancak bazen dikkat çeker. FWIW, yıllar boyunca Clojure'ı kullandığım gibi, böyle bir şey elde etmek için gen sınıfının gücüne ihtiyacım olduğunu düşünürsem, sadece biraz Java yazmak daha kolay olur. – Bill