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'
ide
的 lombok
插件插件已经启用。
以下两种用法都不生效:
第一种
@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 中,你需要进行如下配置:
- 确保你安装了 Lombok 插件。你提到你已经安装了 Lombok 插件,在你的屏幕截图中也可以看到该插件已启用。
在 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 方法,例如:
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; } }
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 方法的过程,选择适合你项目需求的库并根据文档进行配置和使用。
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容