我有一个 Staff 类,其中包含该特定员工的角色列表。我还有 StaffList 来保存员工对象。
如何从 RolesList 中获取该类的特定实例的元素?
我已经尝试过:
staffList.get(0).getRolesList().get(0)
这应该是来自 StaffList 的第一个元素的 RolesList 的第一个元素,但它只是返回 null。
我也尝试过:
rolesList.get(staffList.get(0))
rolesList.getIndexOf(staffList.get(0).getRolesList.get(0)
全部返回null
如果我只是使用 get index 直接从 RolesList 获取值,则不会显示任何问题。
我认为它正在获取 RoleList 的一个版本,但不是该特定 Staff 对象中的版本
我在 roleList 中创建了一个新的员工和角色,然后在构造员工对象时使用了该列表,因此使用该对象的 getRolesList 方法,然后获取索引,它应该从 roleList 中返回值,但事实并非如此:
private List<Staff> staffList = new ArrayList();
ArrayList<Role> roleList = new ArrayList();
roleList.add(Role.DRIVER);
testDriver = new Staff("Mike", "Joy", roleList);
testStaffList.add(testDriver);
GetRolesList() 代码
public List<Role> getRoleList() {
return roleList;
}
我基本上想从 testdriver 对象内的对象角色列表中获取存储的角色。
testDriver --> roleList --> Role.DRIVER(或者任何角色恰好是什么)
最佳答案
(a) 我们没有看到将 testDriver
添加到 staffList
的代码行。
staffList.add( testDriver );
(b) 您在调用 getRolesList
时缺少括号。
(c) 您需要进行一些基本的调试。在调试器或额外代码中,查看:
staffList
的大小- 员工 s = StaffList.get(0)
- 列出角色 = s.getRolesList()
角色的规模
额外提示...显然您正在使用enum对于角色
。如果是这样,您应该考虑使用 EnumSet
而不是 List
,可以减少内存使用并加快执行速度。 EnumSet
是 Set
的专门实现。更多讨论another Question 。不是您问题的一部分,只是一个提示。
Set<Role> roles = EnumSet.of( Role.DRIVER , Role.MECHANIC );
Staff testDriver = new Staff( "Mike" , "Joy" , roles );
关于java - 从另一个类中的 arrayList 获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38938441/