1

次のクラスを定義しました。

 public class priorityQueue<T extends Comparable<T>> implements Iterable<T> 

次のメソッドが含まれています。

  • public boolean プッシュ (T ノード)
  • public T Pop()
  • public イテレータ イテレータ()

コレクションからpriorityQueueに要素をコピーするメソッドを書く必要があります

public static<T>  void copy(Collection<T> source, priorityQueue<? extends Comparable<T>> dest) { 
    for(T elem:source){
        dest.Push(elem);
    }

}

エラーが発生します:

The method Push(capture#1-of ? extends Comparable<T>) in the type priorityQueue<capture#1-of ? extends Comparable<T>> is not applicable for the arguments (T)

メソッドを記述できない理由:

public static<T>  void copy(Collection<T> source, priorityQueue<T extends Comparable<T>> dest) 

エラーが発生します:

Syntax error on token "extends",, expected

要素をコピーするメソッドを宣言するにはどうすればよいですか?

4

2 に答える 2

2

Tはその時点ですでに定義されているため、代わりにこれを試してください

public static<T extends Comparable<T>> 
 void copy(Collection<T> source, priorityQueue<T> dest) {}
于 2013-12-15T12:20:12.970 に答える
0

静的メソッドで未定義の型のワイルドカードを使用しようとしています。静的であるため、クラスのワイルドカード定義は無効であり、メソッドで指定する必要があります。

別のワイルドカードを追加すると、メソッドは次のように終了します。

public static<T, P extends PriorityQueue<Comparable<T>>>  void copy(Collection<T> source, P dest) { 
    for(T elem:source){
        dest.Push(elem);
    }
}
于 2013-12-15T12:22:04.710 に答える