gpt4 book ai didi

java - 我还必须做什么才能让我的方法处理任何类型的对象

转载 作者:行者123 更新时间:2023-12-01 16:32:38 26 4
gpt4 key购买 nike

因此,为了允许任何类型对象,我必须在代码中使用泛型。

我为此重写了此方法,但是当我创建一个对象(例如 Milk)时,它不会让我将其传递给我的方法。

我的通用版本有问题,或者我创建的 Milk 对象不好。

我应该如何正确传递我的对象并将其添加到链接列表中?

这是一种在插入项目时导致错误的方法:

   public void insertFirst(T dd)  // insert at front of list
{
Link newLink = new Link(dd); // make new link

if( isEmpty() ) // if empty list,
last = newLink; // newLink <-- last
else
first.previous = newLink; // newLink <-- old first
newLink.next = first; // newLink --> old first
first = newLink; // first --> newLink
}

这是我尝试插入链接列表的类:

class Milk
{
String brand;
double size;
double price;

Milk(String a, double b, double c)
{
brand = a;
size = b;
price = c;
}
}

这是插入数据的测试方法:

   public static void main(String[] args)
{ // make a new list
DoublyLinkedList theList = new DoublyLinkedList();

// this causes:
// The method insertFirst(Comparable) in the type DoublyLinkedList is not applicable for the arguments (Milk)
theList.insertFirst(new Milk("brand", 1, 2)); // insert at front

theList.displayForward(); // display list forward
theList.displayBackward(); // display list backward
} // end main()
} // end class DoublyLinkedApp

声明:

class Link<T extends Comparable<T>>
{}

class DoublyLinkedList<T extends Comparable<T>>
{}

最佳答案

根据您的错误,您已将 T 定义为 Comparable like

public class DoublyLinkedList<T extends Comparable<T>> {

但是您添加的类型不可比较。目前尚不清楚为什么您的类需要具有可比性,因为您似乎没有在插入方法中使用它,所以我会放弃这个要求。

public class DoublyLinkedList<T> {

如果您要复制 JDK 中的类的功能,我建议您通过阅读其源代码来了解它的工作原理。

http://www.docjar.com/html/api/java/util/LinkedList.java.html

关于java - 我还必须做什么才能让我的方法处理任何类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12990626/

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