好的,这可能是一个非常初学的问题,但是......
现在我有一个名为Person的对象,其上有一个名为setName
的方法我在我的主要班级,我已宣布
List People = new LinkedList();
我想要做的只是在第一个位置调用对象的setName函数。 我发现在使用一系列People时这很容易做到。我所要做的就是说
People[0].setName("steve");
但由于它在链接列表中,我遇到了麻烦。
我尝试使用“get”方法,如此......
People.get(0)
但是它不允许我使用我的用户定义的方法,因此我无法设置名称。
从链接列表中获取对象并访问其方法和实例变量的最佳方法是什么?
提前致谢
答案 0 :(得分:7)
您希望使用泛型将其列为人员列表:
List<Person> People = new LinkedList<Person>();
People.get(0).setName("steve");
答案 1 :(得分:4)
使用generics:
List<Person> people = new LinkedList<Person>();
// …
people.get(0).setName("steve");
答案 2 :(得分:3)
您应该使用泛型:List<Person>
。然后,您就可以使用people.get(0).setName(..)
请注意,Java命名约定要求您的变量为小写。
答案 3 :(得分:2)
您没有设置存储的对象类型。所以你需要上传:
Person person = (Person)People.get(0);
person.setName("steve");
或设置存储对象的类型:
List<Person> people = new LinkedList<Person>();
答案 4 :(得分:2)
LinkedList只有当你想在列表上快速迭代时,以及当你想快速到达第一个或最后一个元素时才是好的。此外,您需要正确定义people
作为LinkedList
才能访问链接列表方法,您应该键入您的列表,所以:
LinkedList<Person> people = new LinkedList<Person>();
people.getFirst().setName();
但是,ArrayList
是更好的一般选择,在按索引访问元素时提供了良好的性能,因此:
List<Person> people = new ArrayList<Person>();
然后
people.get(0).setName("fred");
答案 5 :(得分:0)
如果使用Java 1.4或更早版本,则需要将其强制转换为People类:
((Person)People.get(0)).setName("SomeName");
如果使用Java 1.5或更高版本,请使用泛型:
List<Person> people = new LinkedList();
答案 6 :(得分:0)
您需要将链接列表定义为Person LinkedList:
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")
虽然您必须对人员列表中的每个“人员”执行此操作,但要取消LinkedList的要点。