Java 为自己的类对象创建自己的FIFO队列类以填充它?

Java 为自己的类对象创建自己的FIFO队列类以填充它?,java,class,object,queue,fifo,Java,Class,Object,Queue,Fifo,我正在尝试创建一个FIFO队列,该队列中填充了我自己的类对象 我找到了这个例子,但是如果我用替换,它就不起作用了: import java.util.LinkedList; public class SimpleQueue<E> { private LinkedList<E> list = new LinkedList<E>(); public void put(E o) { list.addLast(o); } publ

我正在尝试创建一个FIFO队列,该队列中填充了我自己的类对象
我找到了这个例子,但是如果我用替换,它就不起作用了:

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();
    }
  }
import java.util.LinkedList;
公共类SimpleQueue{
私有LinkedList=新建LinkedList();
公众作废认沽权(EO){
列表。添加最后一个(o);
}
公共E get(){
if(list.isEmpty()){
返回null;
}
return list.removeFirst();
}
公共对象[]getAll(){
Object[]res=新对象[list.size()];
for(int i=0;i
E
是一个类型参数。简单地说,你可以把它看作是一个“模板”,它可以用来创建一个队列,它可以保存一个特定类的实例。 您可以创建
PCB
对象的队列,如下所示:

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

如果您想了解更多关于Java泛型的知识,这是一个很好的资源。

sun的泛型教程说:

我们建议你使用简练的语言 (如果可能的话,用一个字符)还没有 形式类型的唤起性名称 参数。最好避免低3 这些名称中的大小写字符,使 它很容易区分形式类型 来自普通类和 接口。许多容器类型使用 E、 对于元素,如示例中所示 上面

因此,您将其更改为
PCB
,这不可能是问题所在

但是,如果
PCB
是唯一要存储对象的类,则不必创建泛型类。只需从类定义行中删除
,并将所有
E
替换为
PCB

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

    ....

    public PCB peek()
    {
        return list.getFist();
    }
}
公共类SimpleQueue
{
LinkedList=新建LinkedList();
....
公共PCB peek()
{
return list.getFist();
}
}

泛型应为“通用”。想要将类型变量名更改为
PCB
,似乎您已经将特定类型作为参数。在任何情况下,当您进行搜索和替换时,您可能只是创建了一个类型;使用“PCB”在语法上没有什么错误,只是看起来很难看。如何用
PCB
替换
E
?“它不工作”。什么不起作用?它不编译吗?如果它不编译,错误消息是什么,错误在代码中的什么位置出现。如果它编译了,您看到了什么行为?如果不给我们必要的信息,我们就无法真正帮助你解决问题。我建议阅读作为如何提问的参考。@Luron:你说“…如果我用替换”,我认为这意味着你在
SimpleQueue
的Java源代码中将
替换为
。如果您在我的回答中实例化了
SimpleQueue
,为什么它不起作用?我试过了,它似乎很管用(a
put
get
似乎管用,但我可能遗漏了一些东西)。你有编译错误或堆栈跟踪吗?@Luron:对不起,我不明白。我已经将您的
SimpleQueue
类复制到一个新的Java源文件中,它编译得很好。我还能够像我的答案中所示的那样实例化它。你有什么问题?编译错误?@Luron:那么错误是什么?您是否收到编译器错误消息?当你运行它时,它会给出一些错误吗?代码看起来是有效的,如果Richard说他运行了它并且它工作了,那么问题就不明显了。你需要给我们更多关于这个问题的信息,而不仅仅是“它不起作用”。
public class MyQueue{

    int arr[]=new int[10];
    int i=0;
    int j=0;
    public void inn(int a)
    {
        System.out.println("You hava entered :"+a);
        arr[i]=a;
        i=i+1;
    }
    public int out()
    {
        return arr[j++];

    }
    public static void main(String args[])
    {
        MyQueue q=new MyQueue();
        q.inn(4);
        q.inn(3);
        q.inn(46);
        q.inn(44);
        q.inn(43);
        System.out.println(q.out());
        System.out.println(q.out());
        System.out.println(q.out());
        System.out.println(q.out());
    }
}