gpt4 book ai didi

java - 找不到符号错误,java似乎认为对象/方法不存在

转载 作者:行者123 更新时间:2023-12-01 18:53:41 24 4
gpt4 key购买 nike

class Person{
private String navn; //a Person class, "navn" means "name" in norwegian

Person(String s){
navn = s;
}

public String hentNavn(){ //returns the name of the person
return navn;
}
}

class PersonBeholder<Person>{ //a container using an own implementation of
private Lelem forste; //a linked list
private int ant = 0; //number of persons currently in the list

private class Lelem{
Lelem neste;
Person personen;

Lelem(Person p){
personen = p;

}

public Person hentPerson(){ //returns the Person object
return personen; //being pointed to
}
}

public void settInnPerson(Person denne){ //this is the method for
Lelem lel = new Lelem(denne); //appending a Person to the list
lel.neste = forste;
forste = lel;
**System.out.println(forste.hentPerson().hentNavn());**
/*this is where it goes wrong*/
ant++;

}
}
class TestPersoner2{
public static void main (String [ ] args){
PersonBeholder<Person> pl = new PersonBeholder<Person>();
Person Emil = new Person("Emil");
Person Nils = new Person("Nils");
pl.settInnPerson(Emil);
pl.settInnPerson(Nils);
}
}

输出

TestPersoner2.java:35: error: cannot find symbol
System.out.println(forste.hentPerson().hentNavn());
^
symbol: method hentNavn()
location: class Object
1 error

尝试让 java 打印存储在容器中的人名,该容器具有自己的链表数据结构实现。

我创建了一个自己的列表元素类,用于为每个元素创建指向列表中下一个元素的对象。 Lelem(列表元素)类包含一个用于返回 Person 对象的方法,而 Person 类包含一个用于返回字符串“navn”(即人名)的方法。

Java 似乎认为这个 hentNavn() 方法不存在,我不明白为什么。有人可以告诉我这只是一个愚蠢的打字错误吗?

B

最佳答案

问题在于您已将 PersonBeholder 设为一个泛型类,其类型参数Person。我怀疑您打算做一些事情,例如实现通用接口(interface),使用Person作为类型参数

因此,在 PersonBeholder 中,名称 Person 并不引用您的 Person 类 - 它引用编译器的类型参数对此一无所知。

只需更改此:

class PersonBeholder<Person>{

class PersonBeholder {

并从此更改您的实例化:

PersonBeholder<Person> pl = new PersonBeholder<Person>();

至:

PersonBeholder pl = new PersonBeholder();

一切都会好起来的。

如果您确实希望您的PersonBeholder类是通用的,请为其指定一个不同的类型参数名称。我怀疑你不这么认为。

关于java - 找不到符号错误,java似乎认为对象/方法不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14891582/

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