2012-08-11 20 views
5

JRuby'de java kaynak kodunda orjinal olarak aşırı yüklenmiş bir yöntemi geçersiz kılmaya çalıştığımızda, 2010'da JRuby'de benzer bir sorun oluştuğunu gördüm. Bunu Jython'da nasıl ele alıyoruz? Daha spesifik olarak, geçersiz kılmak için aşırı yüklenen ve geri kalanları göz ardı eden yöntemlerden birini nasıl belirleyebilirim veya bunların tümünü nasıl geçersiz kılabilirim? Aynı adı taşıyan Jython geçersiz kılma yöntemi

Eğer

+0

Aşırı yüklenmiş bir yöntemi mi çağırmaya çalışıyorsunuz, yoksa Python'da bir tanımlı mı? – delnan

+0

Java'da aşırı yüklü olan belirli bir yöntemi çağırmaya çalışıyorum ve Jython'da geçersiz kılıyorum. –

cevap

1

Python yöntemi desteklemediği gibi ederiz (ama destek varsayılan değerleri yapar).

def my_function(paramA, paramB = None): 
    pass 

Jython yalnızca bir Python uygulaması olduğundan, aynı durumun doğru olduğunu kabul ediyorum.

+1

doğru ... o zaman hangi aşırı yüklenme yöntemini belirlemek için varsayılan değerleri nasıl kullanabilirim? Teşekkürler –

0

Jython'dan belirli bir Java yöntemini çağırmak için, türlerin çok yakından eşleşmesi veya tam olarak eşleştirilmesi gerekebilir.

Jython bazı type coercion yapar, ancak bunun istediğiniz yöntemi seçmediği durumlar vardır.

Belirli temel sınıflardaki genel yöntemleri aramak için BaseClass.method(self, ...)'u kullanabilirsiniz. Korumalı yöntemleri çağırmak için prefixself.super__method(...) gibi bir yöntem adı gerekir.

İlgili konular