我用Builder优雅的实现了对象的创建

使用构造函数直接属性赋值

Java的对象创建大家都知道,当对象创建完之后,我们可以有几种方式给对象的属性赋值。比如在new的时候给属性赋值。像这样:

这样在创建对象时就将属性赋值,的确很方便。但是如果对象的属性很多,我们这么赋值就很不优雅了。

使用setter属性赋值

一般我们实际开发中,实体类会有很多属性。这时我们可以使用setter方法给属性赋值,如下代码:

我们一般也是这么写的,但是看到这么多的setter容易眼花,可能写着写着漏掉了一些字段。用户就很有可能拿到不完整的对象。

使用Builder属性赋值

其实我们可以使用Lombok的@Builder注解,能够使我们更直观的创建对象,同时给属性赋值。我们在实体类上面添加注解@Builder

@Builder
public class ProductInfo {
...
}

然后创建对象时直接给属性赋值:

这样我们创建对象与给属性赋值就没有分开,提升了代码的阅读性。使用Builder创建对象,我们需要最终调用完build()方法对象才创建完成。保证了对象的完整性。

往期推荐

扫码二维码,获取更多精彩。或微信搜Lvshen_9,可后台回复获取资料

1.回复"java" 获取java电子书;

2.回复"python"获取python电子书;

3.回复"算法"获取算法电子书;

4.回复"大数据"获取大数据电子书;

5.回复"spring"获取SpringBoot的学习视频。

6.回复"面试"获取一线大厂面试资料

7.回复"进阶之路"获取Java进阶之路的思维导图

8.回复"手册"获取阿里巴巴Java开发手册(嵩山终极版)

9.回复"总结"获取Java后端面试经验总结PDF版

10.回复"Redis"获取Redis命令手册,和Redis专项面试习题(PDF)

11.回复"并发导图"获取Java并发编程思维导图(xmind终极版)

另:点击【我的福利】有更多惊喜哦。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kotlin + 协程 + Retrofit + MVVM 是一种非常优雅的方式来实现网络请求。下面是一个简单的示例: 首先,我们需要添加相关依赖库: ```gradle // Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9' // Retrofit2 implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' // ViewModel和LiveData implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.0' implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.0' ``` 接下来,我们创建一个数据类来表示网络请求返回的数据: ```kotlin data class Response<T>( val code: Int, val msg: String, val data: T? ) ``` 然后,我们创建一个接口来描述我们的API: ```kotlin interface ApiService { @GET("api/get_data") suspend fun getData(): Response<List<String>> } ``` 注意,我们在这里使用了 `suspend` 关键字来表示这个方法是一个挂起函数。 接下来,我们创建一个 `ApiService` 的实例: ```kotlin val retrofit = Retrofit.Builder() .baseUrl("https://example.com/") .addConverterFactory(GsonConverterFactory.create()) .build() val api = retrofit.create(ApiService::class.java) ``` 现在,我们可以在我们的 ViewModel 中使用这个 `api` 对象来进行网络请求了: ```kotlin class MyViewModel : ViewModel() { private val _data = MutableLiveData<List<String>>() val data: LiveData<List<String>> = _data fun loadData() { viewModelScope.launch { val response = api.getData() if (response.code == 200) { _data.value = response.data } } } } ``` 在这里,我们使用了 `viewModelScope` 来启动一个协程来进行网络请求。如果请求成功,我们就将数据传递给 `_data` 变量,它是一个 LiveData 对象。 最后,我们可以在我们的 Activity 或 Fragment 中观察 `data` 变量来获取网络请求返回的数据: ```kotlin class MyActivity : AppCompatActivity() { private val viewModel by viewModels<MyViewModel>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my) viewModel.data.observe(this, Observer { data -> // 在这里更新UI }) viewModel.loadData() } } ``` 这样,我们就使用 Kotlin + 协程 + Retrofit + MVVM 实现了一个优雅的网络请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值