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

Java如何实现打印对象属性值的Display方法并编写main方法

实现方案

首先需要修正原代码的一个致命问题:你当前把staff1、staff2两个员工对象定义为employee类的实例成员,每次创建employee实例时都会同步创建两个新的employee对象,会触发无限递归实例化,最终导致栈溢出,这两个对象需要移到main方法内定义。

Display方法实现

按要求实现接收对象入参、打印属性的方法,这里写为静态方法方便在main静态上下文里直接调用,同时增加空判断避免空指针异常:

public static void Display(employee emp) {
    if (emp == null) {
        System.out.println("传入的员工对象不存在");
        return;
    }
    System.out.println("姓名:" + emp.name);
    System.out.println("部门:" + emp.dept);
    System.out.println("薪资:" + emp.salary);
    System.out.println("---");
}

如果你需要方法返回属性值而不是直接打印,可以把方法返回值改为String,拼接属性内容后返回:

public static String getEmpInfo(employee emp) {
    if (emp == null) {
        return "传入的员工对象不存在";
    }
    return String.format("姓名:%s,部门:%s,薪资:%d", emp.name, emp.dept, emp.salary);
}

main方法补充代码

删除类中原来定义的staff1、staff2成员变量,在main方法中补充实例化、方法调用的逻辑:

public static void main (String args [])
{
    // 实例化两个员工对象
    employee staff1 = new employee("x","IT",100000);
    employee staff2 = new employee("y", "HR", 200000);
    // 调用Display方法打印属性
    Display(staff1);
    Display(staff2);

    // 如果使用返回字符串的版本,替换为以下代码即可
    // System.out.println(getEmpInfo(staff1));
    // System.out.println(getEmpInfo(staff2));
}

完整可运行代码参考

public class employee
{
    String name;
    int salary;
    String dept;

    public employee(String n, String d, int s)
    {
        this.name= n;
        this.salary= s;
        this.dept = d;
    }   

    public static void Display(employee emp) {
        if (emp == null) {
            System.out.println("传入的员工对象不存在");
            return;
        }
        System.out.println("姓名:" + emp.name);
        System.out.println("部门:" + emp.dept);
        System.out.println("薪资:" + emp.salary);
        System.out.println("---");
    }

    public static void main (String args [])
    {
        employee staff1 = new employee("x","IT",100000);
        employee staff2 = new employee("y", "HR", 200000);
        Display(staff1);
        Display(staff2);
    }
}

补充说明:Java编码规范中类名推荐使用大驼峰命名,也就是类名建议改为Employee,不修改也可以正常编译运行。

内容的提问来源于stack exchange,提问作者D S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:15:45