gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:27:14 25 4
gpt4 key购买 nike

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

// 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;
}

最佳答案

result的类型和temp之所以不同,是因为它们代表不同类型的事物。让我们看一下这段代码:

T result = q.dequeue();

这里,我们存储在result中的东西当您从队列中出列时,返回的是什么类型的东西 q 。那么q是什么类型的东西?店铺?查看参数,我们看到qQueue<T> ,这意味着队列中的每个元素的类型都是 T 。因此,我们需要给出result类型T ,因为它代表从队列中取出的单个元素。

另一方面,当我们写

Queue<T> temp = new Queue<T>();

目标是创建一个新的 Queue可以容纳 T 类型的对象。为此,我们需要告诉 Java 我们希望它是 Queue<T> .

这与我们声明 result 时不同的原因是我们正在尝试做根本不同的事情。 result旨在容纳单个项目,其类型为 T在这种情况下。 temp旨在存储一系列项目,因此我们将其设为 Queue<T>表明它不仅仅是一个 T ,而是它们的队列。

希望这有帮助!

关于java - 为什么在这个泛型方法中这些变量有不同的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56728047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com