不兼容的类型:java.lang.Object 无法转换为 T [英] incompatible types : java.lang.Object cannot be converted to T

查看:73
本文介绍了不兼容的类型: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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆