2015-12-09 3 views
8

मैं का उपयोग कर रेट्रोफिट 2 बीटा 2 अगले समस्या हो रही है:एपीआई इंटरफेस का विस्तार नहीं होना चाहिए अन्य इंटरफेस पुराना वापस 2

java.lang.IllegalArgumentException: API interfaces must not extend other interfaces. 

इसका कारण यह है मैं इस तरह रेट्रोफिट के एपीआई के लिए एक इंटरफेस है:

public interface RetrofitBaseAPI { 

    @POST 
    Call<LoginResp> login(@Url String url, @Body LoginReq loginReq); 

    @POST 
    Call<String> logout(@Url String url, @Header("Cookie") String sid); 
} 

उदाहरण के लिए, उनमें से एक यह एक है:

public interface RetrofitWiserLinkAPI extends RetrofitBaseAPI { 

    @GET("/rs/DeviceIdentification") 
    Call<DeviceId> getDeviceIdentification(@Header("Cookie") String sid); 
} 

और फिर, मैं तीन अन्य इंटरफेस का के तीन है मी इस रेट्रोफिटबेसैप इंटरफ़ेस से विस्तारित है।

जब मैं दिए गए इंटरफ़ेस के साथ retrofit.create (क्लास क्लास) को कॉल करने का प्रयास करता हूं, तो मुझे हमेशा यह त्रुटि प्राप्त होती है।

जहां तक ​​मैं पढ़ रहा था, एकमात्र समाधान तीन निर्दलीय इंटरफेस बनाने का एकमात्र समाधान है। क्या यह सच है? कोई और समाधान जानता है?

मैं थोड़ा अजीब है कि हम कोड नकल करने की जरूरत है खोजने के लिए, लेकिन अच्छी तरह से है, शायद एक कारण मुझे समझ नहीं आता .....

अग्रिम धन्यवाद है!

धन्यवाद,

संपादित करें: वही समस्या अंतिम रेट्रोफिट 2 रिलीज़ संस्करण का उपयोग कर। मुझे लगता है कि यह रेट्रोफिट से एक सीमा है ....

+2

नहीं, यह संभव नहीं है। आप और अधिक पढ़ सकते हैं [यहां] (https://github.com/square/retrofit/pull/676) – Blackbelt

+0

धन्यवाद आपके उत्तर के लिए बहुत कुछ! और प्रदर्शन प्रदर्शन, desing, आदि के किसी भी विशेष कारण के लिए है ??? या यह केवल संभावित उपयोग मामलों को कम करने के लिए है? – zapotec

+0

@zapotec "रेट्रोफिट रचना का समर्थन करता है। यह पीआर विरासत जोड़ता है।" किसी ने कहा ... –

उत्तर

10

बेस रेट्रोफिट इंटरफ़ेस होना संभव नहीं है।

JakeWharton:

रेट्रोफिट विरासत से अधिक रचना के पक्ष में है। प्रति सेवा एक इंटरफ़ेस।

तो जैसा कि आप पहले ही पाए गए हैं, केवल एकमात्र समाधान तीन निर्दलीय इंटरफेस बनाना है।

+4

क्या एक पिटी: - / – Matthias

संबंधित मुद्दे