Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这些变量在这个泛型方法中有不同的类型?_Java_Generics_Queue - Fatal编程技术网

Java 为什么这些变量在这个泛型方法中有不同的类型?

Java 为什么这些变量在这个泛型方法中有不同的类型?,java,generics,queue,Java,Generics,Queue,为什么“result”是用简单的“T”创建的,而“temp”是用“Queue”创建的,这有关系吗 // returns the item at the front of the given queue, without // removing it from the queue public static <T> T peek(Queue<T> q) throws NoSuchElementException { /*

为什么“result”是用简单的“T”创建的,而“temp”是用“
Queue
”创建的,这有关系吗

// returns the item at the front of the given queue,
  without 
     // removing it from the queue
     public static <T> T peek(Queue<T> q) 
     throws NoSuchElementException {
        /** COMPLETE THIS METHOD **/
        if (q.isEmpty()) {
            throw new NoSuchElementException("Queue Empty");
        }
        T result = q.dequeue();

        Queue<T> temp = new Queue<T>();
        temp.enqueue(result);

        while(!q.isEmpty()) {
           temp.enqueue(q.dequeue());
        }

        while(!temp.isEmpty()) {
           q.enqueue(temp.dequeue());
        }
        return result;
     }
//返回给定队列前面的项目,
没有
//将其从队列中删除
公共静态T peek(队列q)
抛出非接触元素异常{
/**完成此方法**/
if(q.isEmpty()){
抛出新的NoSuchElementException(“队列为空”);
}
T result=q.dequeue();
队列温度=新队列();
临时排队(结果);
而(!q.isEmpty()){
临时排队(q.dequeue());
}
而(!temp.isEmpty()){
q、 排队(temp.dequeue());
}
返回结果;
}

结果
和临时
的类型不同,因为它们代表不同类型的事物。让我们看看这段代码:

T result = q.dequeue();
在这里,我们存储在
result
中的内容是当您从队列
q
中退出队列时返回的任何类型的内容。那么
q
存储什么类型的东西呢?查看参数,我们看到
q
是一个
队列
,这意味着队列中的每个元素都是
T
类型。因此,我们需要给出
result
类型
T
,因为它表示从队列中取出的单个元素

另一方面,当我们写作时

Queue<T> temp = new Queue<T>();
Queue temp=new Queue();
目标是创建一个新的
队列
,该队列可以容纳
T
类型的对象。为此,我们需要告诉Java我们希望它成为一个
队列

这与我们声明
result
时不同的原因是我们试图做根本不同的事情<代码>结果
设计用于保存单个项目,在本例中,该项目的类型为
T
temp
设计用于存储项目集合,因此我们将其设置为
队列
,以表明它不仅仅是单个
T
,而是它们的队列


希望这有帮助

result
temp
的类型不同,因为它们代表不同类型的事物。让我们看看这段代码:

T result = q.dequeue();
在这里,我们存储在
result
中的内容是当您从队列
q
中退出队列时返回的任何类型的内容。那么
q
存储什么类型的东西呢?查看参数,我们看到
q
是一个
队列
,这意味着队列中的每个元素都是
T
类型。因此,我们需要给出
result
类型
T
,因为它表示从队列中取出的单个元素

另一方面,当我们写作时

Queue<T> temp = new Queue<T>();
Queue temp=new Queue();
目标是创建一个新的
队列
,该队列可以容纳
T
类型的对象。为此,我们需要告诉Java我们希望它成为一个
队列

这与我们声明
result
时不同的原因是我们试图做根本不同的事情<代码>结果
设计用于保存单个项目,在本例中,该项目的类型为
T
temp
设计用于存储项目集合,因此我们将其设置为
队列
,以表明它不仅仅是单个
T
,而是它们的队列


希望这有帮助

这就更有意义了,我不想看t,就像我看int或float一样,谢谢!这就更有意义了,我不想看t,就像我看int或float一样,谢谢!