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/lombokcompileOnly 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 方法的过程,选择适合你项目需求的库并根据文档进行配置和使用。
以上是 android java 引入了 lombok 使用 getter setter 注解无效? 的全部内容, 来源链接: utcz.com/p/945326.html