【问题标题】:Java how to return a generic type that extends an interfaceJava如何返回扩展接口的泛型类型
【发布时间】:2018-07-13 07:50:21
【问题描述】:

我有一个名为 IDedObject 的接口,我正在创建一个链表类,该类使用扩展 IDedObject 接口的泛型。在linkedList 类中,我有一个函数尝试根据它的数据查找给定项目,然后返回该项目。我收到一个错误提示

不兼容的类型。必需:任何类型。找到:IDedObject

这是我的代码的样子:

界面:

public interface IDedObject {
    public int getID();
    public void printID();
}

链表:

public class singlyLinkedList<AnyType extends IDedObject>  {

    public Node<AnyType> endMarker;
    public Node<AnyType> beginMarker;

    AnyType findID(int ID){
        Node curNode = beginMarker;
        while(curNode.getNext() != endMarker){
            if (curNode.getData().getID() == ID){
                return curNode.getData();
            }
        }
        return null;
    }
}

class Node<AnyType extends IDedObject>{
    public Node(AnyType d, Node<AnyType> n){
        data = d;
        next = n;
    }

    public Node getNext(){
        return next;
    }

    public AnyType getData() {
        return data;
    }

    public AnyType data;
    private Node<AnyType> next;

    private int theSize;
}

感谢您对此提供的任何帮助。这是一个家庭作业,所以我需要使用一个通用的扩展 IDedObject。

谢谢。

【问题讨论】:

  • 为什么要扩展接口?实现它,这些函数什么都不做,因为它们没有任何身体可以做任何事情
  • @BlooB 我有另一个实现接口的类。在 main 函数中,我需要使用我创建的 LinkedList 并用实现接口的对象填充它。
  • 发布 main() 方法,以及有关错误的更多详细信息。
  • curNode 使用原始类型Node 并作为getNext() 的返回类型可能与您的错误有关。
  • 我解决了这个问题。请看下面我的回答。谢谢你们的帮助。

标签: java generics interface linked-list return


【解决方案1】:

我通过更改解决了问题

Node curNode = beginMarker;

Node<AnyType> curNode = beginMarker;

在 LinkedList 类的 findID 函数中。不知道我是怎么错过的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多