yoluyla derleme değil, aşağıdaki yapıya sahiptir:Kovariant Dönüş Türü JavaC
Javac aşağıdaki iletiyle başarısızpublic 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();
}
: Ancak
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
Eclipse ince derlemek ve bildiğim kadarıyla yapabilirsiniz Görebildiğim gibi - FooBar'ın fooBar() yöntemi, hem Foo hem de Bar'ın fooBar() yönteminin kontratını kovaryant geri dönüşler kullanarak karşılamaktadır.
Bu, Eclipse derlemesinde veya javac'ta bir hata mı? Ya da javac'ı derlemek için ikna etmenin bir yolu var mı? Başvuru için benim Javac seçenekleri şuna benzer: Sen filanca arayüzünde Foo ve Bar hem uzatıyoruz
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
Open-jdk derleyici sürüm 1.6.0_22 ile aynı sorun. ama java7'de çalışıyor. –
Sadece test ettim ve evet, yani öyle - harika. –
Mümkün [çoğalt] (http://stackoverflow.com/questions/11343238/java-implementing-multiple-interfaces-with-same-method-and-different-return-ty)? – amaidment