के माध्यम से संकलन नहीं मैं निम्नलिखित संरचना है:इंटरफ़ेस में covariant वापसी प्रकार javac
public interface BarReturn {}
public interface FooReturn {}
public interface FooBarReturn extends FooReturn, BarReturn {}
public interface Foo {
FooReturn fooBar();
}
public interface Bar {
BarReturn fooBar();
}
public interface FooBar extends Foo, Bar {
FooBarReturn fooBar();
}
javac निम्न संदेश के साथ विफल रहता है:
FooBar.java:2: types Bar and Foo are incompatible; both define fooBar(), but with unrelated return types
public interface FooBar extends Foo, Bar {
^
1 error
हालांकि, ग्रहण यह ठीक संकलन कर सकते हैं, और जहाँ तक जैसा कि मैं देख सकता हूं कि इसे संकलित करना चाहिए - FooBar की fooBar() विधि कॉन्वेंट रिटर्न का उपयोग करके Foo और Bar की fooBar() विधि दोनों के अनुबंध को संतुष्ट करती है।
क्या यह एक्लिप्स संकलन में या जावा में एक बग है? या क्या इसे संकलित करने के लिए जावैक को मनाने का कोई तरीका है? संदर्भ के लिए मेरे जावैक विकल्प इस तरह दिखते हैं:
javac -d /tmp/covariant/target/classes -sourcepath /tmp/covariant/src/main/java: /tmp/covariant/src/main/java/Foo.java /tmp/covariant/src/main/java/BarReturn.java /tmp/covariant/src/main/java/FooBarReturn.java /tmp/covariant/src/main/java/Bar.java /tmp/covariant/src/main/java/FooReturn.java /tmp/covariant/src/main/java/FooBar.java -g -nowarn -target 1.6 -source 1.6
ओपन-जेडीके कंपाइलर संस्करण 1.6.0_22 के साथ एक ही समस्या। लेकिन यह जावा 7 में काम करता है। –
बस इसका परीक्षण किया और हाँ, तो यह करता है - बढ़िया। –
संभावित [डुप्लिकेट] (http://stackoverflow.com/questions/11343238/java-implementing-multiple-interfaces-with-same-method-and-different-return-ty)? – amaidment