2017-11-08 17 views
0

汎用インタフェースでコンパイルエラーが発生しているようです。目標は、テストクラスで使用するインタフェースを作成して、ドメインクラスの共通メソッドと生成されたDTOクラスを定義することです。私はいくつかの掘り下げを行いました。私が今までに見つけた答えは、私がしようとしていることには当てはまりません。ほとんどの回答はこれに戻ります:class not within type boundsまたはここではオプションではないワイルドカードを使用することをお勧めします。Java汎用インタフェース '型引数が境界内にない'エラー

私がコンパイルしようとすると、私は次のエラーを取得:

class SubCollectionDto 
    implements ISubCollection 

class BrandDto<T extends SubCollectionDto> 
    implements IBrand<T> 
:生成されたDTOクラスがどのように見える

interface IBrand<T extends ISubCollection> 

interface ISubCollection 

class Brand<T extends SubCollection> 
    extends Entity 
    implements IBrand<T> 

class SubCollection 
    extends Entity 
    implements ISubCollection 

[uberCompile] BrandDto.java:10: error: type argument T#1 is not within bounds of type-variable T#2 
[uberCompile] public class BrandDto<T extends SubCollectionDto> implements IBrand<T> { 
[uberCompile]                  
[uberCompile] where T#1,T#2 are type-variables: 
[uberCompile]  T#1 extends SubCollectionDto declared in class BrandDto 
[uberCompile]  T#2 extends ISubCollection declared in interface IBrand 

私のクラスの構造は次のようになります

私はここで間違っていることを理解しようとしているのです。どんな助けでも大歓迎です。

+0

あなたのクラスのボディを取り除くことはできますか?それらは問題に無関係であり、小さな画面で読むことが不可能になります。 –

+2

1.8でうまくコンパイルできます。 – tsolakp

+0

私は現在違いがあれば1.7を使用しています。奇妙なことは、私は日食からどんな誤りも得られないということです。私はantを使ってコンパイルするとエラーになります – pbuchheit

答えて

0

私はそれを最終的に考え出したと思います。それは実際にジェネリックスとは関係のないクラスパスの問題でした。私が元々DTOクラスをセットアップしたとき、彼らは 'src'ディレクトリの下にあった。私は後でそれらを別のディレクトリに移動しましたが、明らかに古いフォルダは決して削除されませんでした。そこでeclipseは現在の正しいファイルセットを見ていましたが、antは古いディレクトリを見ていました。それがなぜ私が見たエラーメッセージを引き起こしていたのか分かりませんが、今は動作しています。

関連する問題