「程序员闯关记」解决java中的NoSuchMethodException

135 阅读2分钟

错误信息java.lang.NoSuchMethodException: co.yixiang.modules.product.domain.YxStockRecord.<init>()通常是由于缺少无参构造函数引起的。在Java中,如果没有显式地定义构造函数,则编译器会自动生成一个无参构造函数,但是如果显式地定义了一个带参数的构造函数,则编译器将不会生成无参构造函数。

在这种情况下,如果使用了lombok的@Data注解,它会为类自动生成所有默认的构造函数、getter和setter方法。但是,它不会为类自动生成无参构造函数。因此,当我们需要通过无参构造函数来创建类的实例时,就会出现java.lang.NoSuchMethodException错误。

解决该问题的方法是,使用lombok中的@NoArgsConstructor@AllArgsConstructor注解,分别为类生成无参构造函数和带参构造函数。这样就可以避免由于缺少无参构造函数引起的错误。

改为以下代码即可:

kotlinCopy code
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class YxStockRecord {
    //...
}

此外,如果在使用lombok的过程中,出现类似于java.lang.NoSuchMethodException的错误,也可以尝试手动添加对应的构造函数,或者使用其他的lombok注解来生成构造函数。

Lombok是一个Java库,可以通过注解来减少样板代码,从而简化Java代码。它的目标是提高Java开发人员的生产力,使他们能够更专注于业务逻辑而不是样板代码。Lombok已成为Java开发人员使用的非常流行的工具之一,其主要原因是它可以减少大量重复的代码,从而使代码更加简洁和易于阅读。

在Java开发中,通常需要编写很多模板代码,如getter和setter方法、构造函数、equals和hashCode方法等等。这些模板代码往往非常繁琐,而且容易出错。Lombok的主要目标是通过自动生成这些模板代码来简化Java开发过程,并且让代码更加易于阅读和维护。

Lombok的常用注解包括@Data、@Getter、@Setter、@NoArgsConstructor、@AllArgsConstructor等等。其中,@Data注解是Lombok的核心注解之一,它可以自动生成getter和setter方法、equals和hashCode方法以及toString方法。@Getter和@Setter注解分别用于自动生成getter和setter方法。@NoArgsConstructor和@AllArgsConstructor注解用于自动生成无参构造函数和全参构造函数。

Lombok还提供了许多其他注解,例如@Builder注解可以用于自动生成Builder模式相关的代码,@Slf4j注解可以用于自动生成日志相关的代码等等。总之,Lombok可以帮助Java开发人员大大减少样板代码,从而提高生产力。