2016-03-19 16 views
0

Özel sınıfım, Retrofit'ten fazla bir sürme yöntemidir, Ancak aynı sınıfta, aynı tanımı olan bir yöntem içeren Twitter'ı kullanıyorum.Farklı Arabirimlerden Aynı Arabirim yöntemini nasıl uygularım - Retrofit ve Twitter

Ben de burada

'failure(RetrofitError error)' cannot overriden 'failure(RetrofitError error)' in 'com.twitter.sdk.android.Callback' overriden method is final 

@Override 
public void failure(RetrofitError error) 

aynı uyarıyı uyarı alıyorum. Ben bu konuda kurtulabilirsiniz Nasıl Yani enter image description here enter image description here

enter image description here

App.getRestClient().getWeatherService().getWeather("s", new Callback<ApiResponse>() 
      { 
       @Override 
       public void success(ApiResponse apiResponse, Response response) 
.

Teşekkürler. Bir tip iki arabirimi uygular ve her bir arayüz özdeş imza içeren bir yöntem tanımlarsak

cevap

0

, o zaman geçerli tek bir yöntem yoktur, ve ayırt edilebilir değildir. Eğer iki yöntemde çelişen dönüş türleri varsa, o zaman bir derleme hatası olacaktır. Bu, kalıtımın genel kuralı, yöntem geçersiz kılma, gizleme ve bildirimlerdir ve yalnızca 2 devralınan arabirim yöntemleri arasında değil, aynı zamanda bir arabirim ve bir süper sınıf yöntemi veya hatta jeneriklerin tip silmesinden kaynaklanan çakışmalar için de geçerlidir. .

@Override-equivalent yöntemlerini, geçersiz kılma ve gizleme yönteminin normal gereksinimlerine tabi olarak devralabilirsiniz. Onlar @Override-equivalent ARE, etkili bir şekilde uygulamak için tek bir yöntem vardır ve böylece ayırt etmek/seçmek için hiçbir şey yok.

Derleyici hangi arabirimin hangi yöntemle olduğunu belirlemek zorunda değildir, çünkü bir kez @Override eşdeğerli olduğu belirlendiklerinde, aynı yöntemdir.

Olası uyumsuzlukları çözmek zor olabilir, ancak bu tamamen başka bir konudur.

sorun

public class YourClass implements RetroFitIntterface{ 

TwitterInterface myInterface = new TwitterInterface(){ 

/* Overrided method from interface */ 
@override 
public void method1(){ 

} 

}; 

/* Overrided method from superclass*/ 
@override 
public void method1(){ 

} 

} 
+0

Çözümün çözümü nedir? Her ikisi de benim kendi yöntemlerim değil, bir diğeri ise Twitter'dan diğeri ise bir Retrofit kütüphanesi. –

+0

Benim ans son satırı içine bak Anonymous –

+0

VSI arayüz sorunu uygulamak için nasıl sorunu çözmek için yol ekledim, Lütfen benim ans –

0

anonim arayüzü mesaj “overriden yöntem kesindir” (yazım hatası rağmen) doğruyu söyler inanarak uygulamak gidermek için geçersiz kılamaz. Ne de zorundasınız - mesaj bir süper sınıfta son olduğu için, zaten uygulanmaktadır.

Bu, size ihtiyacınız olanı verir mi, Meşeshwar'in daha önce söylediği gibi, tamamen farklı bir hikaye.

+0

Bu temel tanımı biliyorum, sanırım bu soru için yığın üzerinde cevap alamıyorum. Teşekkürler. –

+0

Bu cevap sorununuzu çözmediğinden, iki farklı arabirimi iki farklı sınıfta uygulamanızı öneririm. Onları bir arada tutmak istiyorsanız, sınıflardan birini diğerinde bir iç sınıf olarak düşünebilirsiniz.Bildiğiniz gibi, yine de son bir yöntemi geçersiz kılmanıza izin vermez, ancak _will_, iki arabirimdeki özdeş yöntemler arasında ayrım yapmanıza izin verir. –

İlgili konular