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

Java中打印继承抽象类的ELK模型类对象如何显示字段值?

问题解决方法

日志打印只显示类名不包含字段的原因是Lombok的@Data注解生成的toString()方法默认只包含当前类的字段,而Model1和Model2本身没有定义字段,所以生成的toString()只会输出类名。要让日志打印出父类的字段,可通过以下两种方式修改:

方案一:子类添加@ToString(callSuper = true)

在Model1和Model2上添加@ToString(callSuper = true),强制生成的toString()方法调用父类的toString(),从而包含抽象类中的字段:

修改后的模型类代码

@Data
public abstract class Absmodel{
   public String name;
   public String department;
   public long salary;
}

@Data
@ToString(callSuper = true)
@Document(indexName = "index1", createIndex = false)
public class Model1 extends Absmodel{

}

@Data
@ToString(callSuper = true)
@Document(indexName = "index2", createIndex = false)
public class Model2 extends Absmodel{

}

方案二:手动重写子类的toString()方法

如果不想依赖Lombok的配置,也可以手动在子类中重写toString()方法,显式拼接父类的字段:

示例代码(以Model1为例)

@Data
@Document(indexName = "index1", createIndex = false)
public class Model1 extends Absmodel{
    @Override
    public String toString() {
        return "Model1(name=" + getName() + ", department=" + getDepartment() + ", salary=" + getSalary() + ")";
    }
}

两种方案都能让日志打印出包含字段和对应值的对象信息,推荐第一种方案,更符合Lombok的使用习惯,减少手动代码量。

内容的提问来源于stack exchange,提问作者Keerthana Hemachandran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:07:37