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