Örneğin, aşağıdaki gibi bir Java sınıfı verilir: Clojure'da bir Java sınıfını aşırı yüklenmiş yöntemlerle nasıl proxy edebilirim?
public class Foo {
public String bar(String x) {
return "string " + x;
}
public String bar(Integer x) {
return "integer " + x;
}
}
Foo'nun Clojure alt sınıfını nasıl alt sınıflara ayırabilirim ve yalnızca çubuk (String) yöntemini geçersiz kılabilir, ancak orijinal Foo sınıfındaki çubuğu (Tamsayı) yeniden kullanabilirim. Böyle bir şey (ama bu işe yaramaz):
(let [myFoo (proxy [Foo] []
(bar [^String x] (str "my " x)))]
(println "with string: " (.bar myFoo "abc"))
(println "with integer: " (.bar myFoo 10)))
Bu örnekte şunlar gösterilecektir:
with string: my abc
with integer: my 10
fakat bunun etkilerini öğrenmek istiyorum:
with string: my abc
with integer: integer 10
Cevabım yok, ama sorunuz beni biraz daha akıllı hale getiren "proxy_core.clj" yi okumam için beni teşvik etti, teşekkürler! :) –
Aslında aynısını yaptım. Başka biri ilgilenirse proxy_core.clj' [burada] (https://github.com/clojure/clojure/blob/master/src/clj/clojure/core_proxy.clj). –