簡體   English   中英

如何從不同的接口實現相同的接口方法 - Retrofit 和 Twitter

[英]How to implement same Interface method from different Interfaces - Retrofit and Twitter

我的自定義類是 Retrofit 的覆蓋方法,但是在同一個類中,我使用 Twitter,其中包含一個具有相同定義的方法。

我收到警告

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

@Override
public void failure(RetrofitError error)

同樣的警告也在這里。

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

在此處輸入圖片說明 在此處輸入圖片說明 在此處輸入圖片說明

那么,我怎樣才能擺脫這個問題。

謝謝。

如果一個類型實現了兩個接口,並且每個接口定義了一個具有相同簽名的方法,那么實際上只有一個方法,它們是不可區分的。 例如,如果這兩個方法具有沖突的返回類型,那么它將是一個編譯錯誤。 這是繼承、方法覆蓋、隱藏和聲明的一般規則,也適用於不僅2個繼承的接口方法之間的可能沖突,也適用於接口和超類方法之間的可能沖突,甚至只是由於泛型的類型擦除引起的沖突.

您可以繼承@Override-equivalent ,但要遵守方法覆蓋和隱藏的通常要求。 由於它們是@Override-equivalent ,因此實際上只有一種方法可以實現,因此沒有什么可區分/選擇的。

編譯器不必確定哪個方法用於哪個接口,因為一旦確定它們是@Override等效的,它們就是相同的方法。

解決潛在的不兼容性可能是一項棘手的任務,但這完全是另一個問題。

解決問題實現匿名接口

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(){

}

}

相信“覆蓋的方法是最終的”消息說的是真的(盡管有拼寫錯誤),你不能覆蓋。 你也不必——因為消息在超類中是最終的,它已經實現了。

正如@Maheshwar 已經說過的那樣,這是否能滿足您的需求是一個完全不同的故事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM