1

独自のクラス オブジェクトで満たされた FIFO キューを作成しようとしています。
この例を見つけましたが、 < E > を < PCB > に置き換えると機能しません:

import java.util.LinkedList;


public class SimpleQueue<E> {

private LinkedList<E> list = new LinkedList<E>();


 public void put(E o) {
    list.addLast(o);
     }


  public E get() {
     if (list.isEmpty()) {
          return null;
      }
   return list.removeFirst();
   }


   public Object[] getAll() {
     Object[] res = new Object[list.size()];
    for (int i = 0; i < res.length; i++) {
      res[i] = list.get(i);
      }
   list.clear();
    return res;
 }



    public E peek() {
      return list.getFirst();
      }


  public boolean isEmpty() {
     return list.isEmpty();
    }


  public int size() {
    return list.size();
    }
  }
4

3 に答える 3

1

Eタイプパラメータです。簡単に言うと、特定のクラスのインスタンスを保持できるキューを作成するために使用できる「テンプレート」と見なすことができます。

PCB次のように、オブジェクトのキューを作成できます。

SimpleQueue<PCB> queue = new SimpleQueue<PCB>();

Java GenericsのFAQは、JavaGenericsについて詳しく知りたい場合に役立つリソースです。

于 2010-10-05T19:18:14.010 に答える
0

太陽の一般的なチュートリアルでは、次のように述べています。

正式な型パラメーターには、簡潔 (可能であれば 1 文字) でありながら刺激的な名前を使用することをお勧めします。これらの名前には小文字 3 文字を使用しないことをお勧めします。これにより、正式な型パラメーターを通常のクラスやインターフェイスと簡単に区別できます。上記の例のように、多くのコンテナー タイプでは要素に E が使用されます。

だから、あなたがそれを変更したことは問題にはなりませんPCB

ただし、PCBオブジェクトを格納する唯一のクラスの場合は、ジェネリック クラスを作成する必要はありません。クラス定義行から削除し、すべてを次の<PCB>ように置き換えます。EPCB

public class SimpleQueue
{
    LinkedList<PCB> list = new LinkedList<PCB>();

    ....

    public PCB peek()
    {
        return list.getFist();
    }
}
于 2010-10-05T19:24:40.353 に答える