gpt4 book ai didi

java - 类型 X 中的方法 X 不适用于参数 (int)

转载 作者:行者123 更新时间:2023-12-01 13:57:49 25 4
gpt4 key购买 nike

尝试使用 int 参数调用泛型类的方法时,出现以下错误。

The method insertAfter(T) in the type CDLList<T>.Writer is not applicable for the arguments (int)

通用类代码是

public class CDLList<T> {
public Element Head;
static int count;
public CDLList(T v)
{
Head = new Element(v);
}
public class Element
{
public T data;
public Element next;
public Element prev;

Element(T v)
{
data = v;
prev=null;
next=null;
count++;
}
public T value()
{
return data;
}
}
public Element head()
{
return Head;
}
public Cursor reader(Element from)
{
Cursor CurrCursor=new Cursor(from);
return CurrCursor;
}
public class Cursor
{
public Element current;
Cursor(Element v)
{
current=v;
}
public Element current()
{
T temp;
temp = current.value();
System.out.println(temp);
return current;
}
public void previous()
{
current = current.prev;
}
public void next()
{
current = current.next;
}
public Writer writer()
{
Writer nwriter = new Writer( current);

return nwriter;

}
}



public class Writer
{
public Element current;
Writer(Element temp)
{
current=temp;
}
public boolean delete()
{
Element Td1,Td2;
Td1 = current.prev;
Td2 = current.next;
current=null;
Td1.next = Td2;
Td2.prev = Td1;
return true;

}
public boolean insertBefore(T val)
{

Element t = new Element(val);
Element t2 = current.prev;
t2.next=t;
current.prev=t;
t.next=current;
t.prev=t2;
return true;
}
public boolean insertAfter(T val)
{
Element t = new Element(val);
Element t1 = current.next;
t.next=t1;
t1.prev=t;
current.next=t;
t.prev=current;
return true;

}
}

}

实现泛型类的类是

    public class CDLListTest<T> extends CDLList<T> implements Runnable {
Cursor cursor;

public CDLListTest(T v) {
super(v);
// TODO Auto-generated constructor stub
Element t1= new CDLList.Element(20);
-----------------------
temp.writer().insertAfter(11); -- Getting error here

如果我将泛型类扩展到另一个子泛型类,并将子泛型类扩展到包含 main 函数的类,它就会起作用。

我在这里缺少什么?它应该可以工作,因为该类是通用的,经过谷歌搜索后无法找到任何答案

编辑:很抱歉,昨天我发布这个问题时感到非常疲惫,抱歉。我已经编辑了问题以使其更清楚。

编辑2:已修复public class CDLListTest<T> extends CDLList<T>应该是public class CDLListTest<T> extends CDLList

最佳答案

看起来您已经编写了一个名为 insertAfter(T value) 的方法(您还没有向我们展示)。现在,当您处理 CDLListTest<T> 时,您会引用它。 - 其中T可以是任何类或接口(interface)。因此,当您调用insertAfter时,您传递给它的值必须是 T 。但你传递给它的是 int而不是T

将您的调用更改为 insertAfter通过 T ,或更改 insertAfter 的签名方法,使其参数的类型为 int .

关于java - 类型 X 中的方法 X 不适用于参数 (int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19531449/

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