You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:24:02