这可能是一个初学者的问题,但是。
现在我有一个名为Person的对象它的方法名为setName
我在我的主类中,我已经声明了
List People = new LinkedList();
我想做的就是简单地调用第一个位置对象的setName函数。我发现这在处理一组人员时非常容易做到。我所要做的就是写
People[0].setName("steve");
但是由于它在一个链接列表中,我遇到了麻烦。
我尝试使用"get"方法,像这样…
People.get(0)
但是它不允许我使用我的用户定义的方法所以我不能设置名字
从链表中获取对象并访问其方法和实例变量的最佳方法是什么?
thanks in advance
您想使用泛型使其成为一个人员列表:
List<Person> People = new LinkedList<Person>();
People.get(0).setName("steve");
使用泛型:
List<Person> people = new LinkedList<Person>();
// …
people.get(0).setName("steve");
您应该使用泛型:List<Person>
。然后你就可以使用people.get(0).setName(..)
不能设置存储的对象类型。所以你需要upcast:
Person person = (Person)People.get(0);
person.setName("steve");
或设置存储对象的类型:
List<Person> people = new LinkedList<Person>();
LinkedList只有在您想要快速遍历列表,并且想要快速到达第一个或最后一个元素时才有用。此外,您需要正确地将people
定义为LinkedList
以访问链表方法,并且您应该键入您的列表,如下:
LinkedList<Person> people = new LinkedList<Person>();
people.getFirst().setName();
然而,ArrayList
是一个更好的通用选择,它在通过索引访问元素时提供了良好的性能,因此:
List<Person> people = new ArrayList<Person>();
然后people.get(0).setName("fred");
如果使用Java 1.4或更早版本,则需要将其强制转换为People类:
((Person)People.get(0)).setName("SomeName");
如果使用Java 1.5或更高版本,请使用泛型:
List<Person> people = new LinkedList();
您需要将链表定义为Person:
LinkedList<Person> people = new LinkedList<Person>();
people.get(0).setName("Steve");
另一个注意事项(与问题无关,只是为了改进Java):变量名的第一个字母使用小写,因为Java惯例和任何后续单词的第一个字母都是大写的;
float personsAge = 57.47;
解释(如果容易无聊就忽略):
LinkedList没有设置为存储特定的变量类型。另一种解决这个问题的方法是:
LinkedList people = new LinkedList();
Person person = (Person) people.get(0);
person.setName("steve2")
虽然您必须对people列表中的每个'Person'这样做,但这违背了LinkedList的意义。