現在、組み込みの 1.7 jdk を使用する Eclipse Juno に対して、ターゲット 1.7 およびソース 1.7 を使用する Gradle でコンパイルの問題があります。
私は5つのクラスを持っています:
Info.java --> メソッドを持たないインターフェース (例)
public interface Info { //... }
RealInfo.java --> Info インターフェースを拡張するインターフェース
public interface RealInfo extends Info { //... }
AbstractManager.java --> メソッド「getInfo()」を持つ抽象クラス
public abstract class AbstractManager<I extends Info>
{
public I info;
public I getInfo()
{
return this.info;
}
}
Manager.java --> メソッド「getInfo()」を持つインターフェース
public interface Manager
{
public <I extends Info> I getInfo();
}
DefaultManager.java --> AbstractManagerを拡張
public class DefaultManager extends AbstractManager<RealInfo> implements Manager
{
//...
}
このコードをコピーして Eclipse に貼り付けると、すべて正常に動作します。コンパイルエラーはありません。ただし、ターゲットjdk 1.7を使用してGradleでビルドすると、コンパイラはそれを気に入りません:
DefaultManager.java:16: error: DefaultManager is not abstract and does not override abstract method <I>getInfo() in Manager
public class DefaultManager extends AbstractManager<RealInfo> implements Manager
^
where I is a type-variable:
I extends Info declared in method <I>getInfo()
そこで何が起こるかについて何か考えがありますか?