Java中如何通过setter/getter访问其他类的数组类型属性
问题修复方案
错误根源
你当前报错的核心原因是EmployeeClass中入职日期属性的类型定义错误:你把本该是DateClass类型的属性定义成了int[]数组类型,setDate()是DateClass的自定义方法,Java原生数组没有该方法,自然会报调用失败的错误。同时你要复用DateClass的日期处理逻辑,入职日期属性本身就应该定义为DateClass类型,而非数组类型。
修复后的代码实现
修正后的EmployeeClass代码
public class EmployeeClass { // 改为DateClass类型,复用日期处理逻辑,提前实例化避免空指针 private DateClass dateOfHire = new DateClass(); // 可选设置方式1:直接传入DateClass对象设置入职日期 public void setDateOfHire(DateClass date) { this.dateOfHire = date; } // 可选设置方式2:传入月/日/年三个整数设置入职日期 public void setDateOfHire(int month, int day, int year) { this.dateOfHire.setDate(month, day, year); } // 可选设置方式3:兼容你之前的入参习惯,传入长度为3的int数组设置日期 public void setDateOfHire(int[] dateArr) { if(dateArr != null && dateArr.length == 3) { this.dateOfHire.setDate(dateArr[0], dateArr[1], dateArr[2]); } } // 可选获取方式1:直接返回DateClass对象,可继续调用其getMonth、getDay等方法 public DateClass getDateOfHire() { return this.dateOfHire; } // 可选获取方式2:返回int数组格式的日期,匹配你之前的返回需求 public int[] getDateOfHireArr() { return this.dateOfHire.getDate(); } }
使用示例
public class Test { public static void main(String[] args) { EmployeeClass emp = new EmployeeClass(); // 用数组格式设置入职日期 emp.setDateOfHire(new int[]{5,20,2024}); // 获取数组格式的入职日期 int[] hireDate = emp.getDateOfHireArr(); System.out.println("入职日期:" + hireDate[0] + "月" + hireDate[1] + "日" + hireDate[2] + "年"); // 直接调用DateClass的方法获取单独日期字段 System.out.println("入职年份:" + emp.getDateOfHire().getYear()); } }
内容的提问来源于stack exchange,提问作者fliight
相关产品推荐
相关产品推荐

