2

私は次の作業をしようとしています:

import java.io.Serializable;
public abstract class Thing implements Iterable<? extends Serializable> {} 

しかし、コンパイルして次のエラーが発生します。

Thing.java:2: unexpected type
found   : ? extends java.io.Serializable
required: class or interface without bounds
public abstract class Thing extends Iterable<? extends Serializable> {}

なぜここに曖昧さがあるのか​​ わかりませんか?コンパイラは私が意図していることを知っているべきではありませんか? 可能であれば、この正確な機能を取得できるようになり、これが機能しない理由を理解したいと思います。

助けてくれてありがとう!

4

2 に答える 2

2

あなたの意図は、次のようなものを持つことだと思います。

public class FooBar implements Iterable<? extends Serializable> {
    public Iterator<? extends Serializable> iterator() {
        return new Itr();
    }
}

ただし、これは、ジェネリック パラメーターを just にすることと機能的に同等Serializableです。nextでメソッドを呼び出すと、Iterator<? extends Serializable>が返されますSerializable

于 2012-04-05T05:45:36.070 に答える
1

java.lang.Iterable クラス定義

Iterable<T>

したがって、クラスまたはインターフェイスがジェネリックパラメーターTに割り当てられることを常に期待します

しかし、エラーの原因となったバインドされた型パラメーターを渡しました。

于 2012-04-05T05:18:04.140 に答える