Eclipseで次のコードをコンパイルすると、エラーはありません。
唯一の警告があります:異なる引数でISomeBaseInterfaceを継承することはできません:<java.lang.Object>と<>
SomeDerivedAbstractClassが生タイプです。ジェネリック型への参照が SomeDerivedAbstractClassが
パラメータ化する必要があります私は、最新のEclipseインディゴ(3.7.1)にこのコードをテストしました。
しかし、私はjavacが、このコードをコンパイルしようとした次のエラーがあります:
SomeConcreateClass.java:1: ISomeBaseInterface cannot be inherited with different arguments: <java.lang.Object> and <>
public class SomeConcreateClass
^
1 error
が、私はエラーがある両方のケースでのJava 5とJava 6を訴え、このコードをコンパイル。
このコードで何が問題になっていますか?
public class SomeConcreateClass
extends SomeDerivedClass
implements ISomeInterface
{}
class SomeDerivedClass<T>
extends SomeAbstractClass<Object>
implements ISomeInterface
{
}
abstract class SomeAbstractClass<T>
implements ISomeBaseInterface<T>
{
}
interface ISomeInterface extends ISomeBaseInterface<Object>
{}
interface ISomeBaseInterface<T>
{
}
しかし、Eclipseでまたはjavacのいずれかによってコンパイルされないコードを次
public class SomeConcreateClass
extends SomeAbstractClass
implements ISomeInterface
{}
abstract class SomeAbstractClass<T>
implements ISomeBaseInterface<Object>
{}
interface ISomeInterface extends ISomeBaseInterface<Object>
{}
interface ISomeBaseInterface<T>
{}
のjavac:
SomeConcreateClass.java:1:ISomeBaseInterfaceは 異なる引数を継承することはできません:および<>パブリッククラス SomeConcreateClass ^ 1エラー
のEclipse:
インタフェースISomeBaseInterfaceが一度 異なる引数を持つよりも多くを実装することはできません。ISomeBaseInterfaceと ISomeBaseInterface
そうは - それは、Eclipseのバグですか?
https://bugs.eclipse.org/bugs/show_bug.cgi?id=81824と同じバグですか?
ONE MORE UPDATE:
このコードは、エラーなしで両方のjavacとEclipseでコンパイル:
public class SomeConcreateClass
extends SomeDerivedClass
implements ISomeInterface
{}
class SomeDerivedClass
extends SomeAbstractClass<Object>
implements ISomeInterface
{}
abstract class SomeAbstractClass<T>
implements ISomeBaseInterface<T>
{}
interface ISomeInterface extends ISomeBaseInterface<Object>
{}
interface ISomeBaseInterface<T>
{}
一つだけ違いがあります:SomeDerivedClassがパラメータ化されていないが。
この影響がISomeBaseInterfaceにどのように影響するのか分かりません。
AND ONE MORE UPDATE:
私はIntellijIDEAの最初の例からコードをチェックする - このIDEはエラーを示しています。
しかし、私はそれがEclipseよりもコンパイルのために異なるアプローチを使用していると思います。
使用しているEclipseのバージョンは何ですか? Eclipseの古いバージョン(https://bugs.eclipse.org/bugs/show_bug.cgi?id=81824 – Gnat
MyEclipse 7.5とEclipse Galileo)でこれをコンパイルできるバグがありました。 –
最新のEclipse Indigo(3.7.1)をダウンロードしました。このコードはエラーなしでコンパイルされます。 –