为何传递ArrayList至其他类后无法访问对象属性?
传递包含对象的ArrayList到其他类后访问属性的解决方法
你的问题出在AllStaff类的泛型声明错误和方法参数未指定泛型上,具体修复如下:
1. 修正AllStaff类的成员变量泛型
原代码里static ArrayList <AllStaff> employeesArrayList;的泛型是AllStaff,但你实际要存储的是Employees对象,类型完全不匹配,改成:
static ArrayList<Employees> employeesArrayList;
2. 修正addEmployees方法的参数类型
原方法参数ArrayList listOfEmployees是无泛型的原始类型,取出的元素会被视为Object类型,自然无法调用Employees的方法或访问属性。需要指定泛型为Employees:
public void addEmployees(ArrayList<Employees> listOfEmployees) { System.out.println("List of employees size: " + listOfEmployees.size()); for (int i = 0; i < listOfEmployees.size(); i++) { // 现在可以正常调用getter或访问public属性了 System.out.println("Employee names: " + listOfEmployees.get(i).getName()); System.out.println("Employee names: " + listOfEmployees.get(i).name); } this.employeesArrayList = listOfEmployees; }
额外建议
虽然你现在name是public属性可以直接访问,但从Java封装性的角度来说,更推荐使用getter方法(比如getName())来访问属性,避免直接暴露成员变量,增强代码的可维护性。
内容的提问来源于stack exchange,提问作者OrlandoVSilva
相关产品推荐
相关产品推荐

