incompatible types : java.lang.Object cannot be converted to T(不兼容的类型:java.lang.Object 无法转换为 T)
问题描述
这是我的代码:
package datastructures;
import java.util.Iterator;
public class Stack<T>{
private class Node<T>{
T data;
Node next;
}
private int size;
private Node head;
private Node newNode(T data){
Node new_node = new Node();
new_node.data = data;
new_node.next = null;
return new_node;
}
public Stack(){
size = 0;
head = null;
}
public T pop() {
if(head == null)
return null;
T ret_val = head.data; //Error here
head = head.next;
this.size--;
return ret_val;
}
}
我在 pop 方法中得到错误,这里是错误:
I get the error in the pop method, here is the error:
Error: incompatible types : java.lang.Object cannot be converted to T
我不明白这个错误,我没有在代码中的任何地方使用 Object.
I don't understand this error, I'm not using Object anywhere in my code.
推荐答案
当你声明 Node 为时
When you declare Node as
private class Node<T>
您正在声明一个泛型类型,其中另一个 T 作为封闭类型中的 T.你隐藏了 T.所以,简而言之,就好像你将它声明为
you're declaring a generic type with another T as the T in the enclosing type. You're hiding T. So, in short, it's as if you were declaring it as
private class Node<E>
随便用
private class Node
这篇关于不兼容的类型:java.lang.Object 无法转换为 T的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:不兼容的类型:java.lang.Object 无法转换为 T
基础教程推荐
- 如何对 HashSet 进行排序? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01