android java 引入了 lombok 使用 getter setter 注解无效?

使用的 IntelliJ IDEA 2022.3.1 (Ultimate Edition IDE,android 项目中在build.gradle 引入了 lombok 插件用于自动生成 getter/setter

// https://mvnrepository.com/artifact/org.projectlombok/lombok

compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.28'

idelombok 插件插件已经启用。

以下两种用法都不生效:

第一种

@Getter

@Setter

public class IndexUserApiRequestDTO {

private String gender;

private String size;

private String page;

private String sortColumn;

private String sortType;

}

第二种

public class User {

@Accessors(chain = true)

public staic class UserArchive {

@Getter @Setter

private String userId;

@Getter @Setter

private String gender;

}

}

执行构建的时候各种提示: cound find accessor ... 就是提示没有找到对应的 getter/setter。这是为什么?


回答:

如果在 Android 项目中使用 Lombok,你需要进行一些额外的配置才能使 Lombok 注解生效。

首先,请确保你在 build.gradle 文件中正确使用了 Lombok 插件。你已经在你的 build.gradle 文件中添加了以下配置:

compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.28'

但是这样只是将 Lombok 注解添加到编译路径中,并不会自动应用它们。

在 IntelliJ IDEA 中,你需要进行如下配置:

  1. 确保你安装了 Lombok 插件。你提到你已经安装了 Lombok 插件,在你的屏幕截图中也可以看到该插件已启用。
  2. 在 IntelliJ IDEA 的设置中启用 Lombok 注解处理器:

    • 打开 IntelliJ IDEA 设置。
    • 在左侧导航栏中,选择 "Build, Execution, Deployment" > "Compiler" > "Annotation Processors"。
    • 勾选 "Enable annotation processing" 选项。
    • 在 "Annotation Processors" 选项卡中,确保 "Enable annotation processing" 处于选中状态。
    • 在 "Generated sources directories" 选项卡中,添加 project/module/build/generated/source/apt 目录。

在完成上述配置后,重新构建你的项目,Lombok 的注解应该可以起作用了。

补充:
如果你觉得 lombok 的配置复杂,还有一些其他的 Android 库可以用来自动生成 getter 和 setter 方法,例如:

  1. Butter Knife:Butter Knife 是一个非常流行的 Android View 注入库,它可以自动生成包括 getter 和 setter 方法在内的很多常用代码。你可以使用注解 @BindView 来自动绑定视图,并且 Butter Knife 会为你生成相应的 getter 和 setter 方法。

    public class MainActivity extends AppCompatActivity {

    @BindView(R.id.textView)

    TextView textView;

    // ...

    private void init() {

    // 使用 ButterKnife 绑定视图

    ButterKnife.bind(this);

    // ...

    }

    // 自动生成的 getter 和 setter 方法

    public TextView getTextView() {

    return textView;

    }

    public void setTextView(TextView textView) {

    this.textView = textView;

    }

    }

  2. Android Data Binding:Android Data Binding 是 Android 官方提供的一个库,它可以将布局文件中的视图和数据绑定起来,并且自动生成 getter 和 setter 方法。你可以使用 <data> 标签在布局文件中定义绑定的变量,并在 Java 代码中直接访问相应的 getter 和 setter 方法。

    <layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>

    <variable

    name="user"

    type="com.example.User" />

    </data>

    <!-- ... -->

    <TextView

    android:id="@+id/textView"

    android:text="@{user.name}" />

    </layout>

    public class MainActivity extends AppCompatActivity {

    private User user;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);

    user = new User("John");

    binding.setUser(user);

    }

    // 自动生成的 getter 和 setter 方法

    public User getUser() {

    return user;

    }

    public void setUser(User user) {

    this.user = user;

    }

    }

这些库都可以帮助你简化生成 getter 和 setter 方法的过程,选择适合你项目需求的库并根据文档进行配置和使用。

以上是 android java 引入了 lombok 使用 getter setter 注解无效? 的全部内容, 来源链接: utcz.com/p/945326.html

回到顶部