一、内容概要
在Java中要想创建一个数据类型就需要创建一个JavaBean(一个最普通的java类)并实现其对应的getter()和setter()方法,这两个方法可以自己手动写也可以用工具帮助来生成,总之这些是必不可的。而在Kotlin中需要使用data class来定义一个数据类,如果对Kotlin使用习惯,则相对于java可以省略掉不少模板代码。
二、实战部分
Java代码部分
public class PushBean {
private String alert;
private String title;
private String extras;
public String getAlert() {
return alert;
}
public void setAlert(String alert) {
this.alert = alert;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getExtras() {
return extras;
}
public void setExtras(String extras) {
this.extras = extras;
}
}
Kotilin代码部分
//此处的data是Kotlin的关键字,专门用来定义数据类的
data class PushBean(
var alert: String,//提示消息
var title: String, //标题
var extras: Push//推送内容
) {
}
三、注意点
通过上面的Java代码和Kotilin代码的对比大家应该可以感受到两者明显的不同,不仅仅是语法不同,更多的是一个简洁度。
此外还有几点需要大家注意一下:
1.Kotlin中的数据类必须用于一个构造方法,且构造方法至少需要一个参数。而JavaBean则不需要因为Java本身就有一个不带参数的构造函数。
2.Kotilin构造函数中的参数须强制加上var或者val。而JavaBean不需要。
3.data class前不能用其他修饰符进行修饰,如:inner、open、abstract等。
4.Kotilin中的数据类型一旦定义好以后,系统就会默认为其生成getter、setter、equals、hash、tostring等方法。而JavaBean必须借助第三方库才行,如Loom等
我们看下上面的Kotlin定义的的数据类型PushBean反编译后的java代码是什么样子的
//kotlin反编译后的java代码,其实也没啥就是我们常见的java代码
//大家可以把data class数据类看成Kotlin的语法糖即可
//毕竟Kotlin号称是更好的java,既然是更好的java那本质上还是离不开java
public final class PushBean
{
@NotNull
private String alert;
@NotNull
private String title;
@NotNull
private Push extras;
public PushBean(@NotNull String alert, @NotNull String title, @NotNull Push extras)
{
this.alert = alert;this.title = title;this.extras = extras;
}
@NotNull
public final String getAlert()
{
return this.alert;
}
public final void setAlert(@NotNull String )
{
Intrinsics.checkParameterIsNotNull(, "");this.alert = ;
}
@NotNull
public final String getTitle()
{
return this.title;
}
public final void setTitle(@NotNull String )
{
Intrinsics.checkParameterIsNotNull(, "");this.title = ;
}
@NotNull
public final Push getExtras()
{
return this.extras;
}
public final void setExtras(@NotNull Push )
{
Intrinsics.checkParameterIsNotNull(, "");this.extras = ;
}
@NotNull
public final String component1()
{
return this.alert;
}
@NotNull
public final String component2()
{
return this.title;
}
@NotNull
public final Push component3()
{
return this.extras;
}
@NotNull
public final PushBean copy(@NotNull String alert, @NotNull String title, @NotNull Push extras)
{
Intrinsics.checkParameterIsNotNull(alert, "alert");
Intrinsics.checkParameterIsNotNull(title, "title");
Intrinsics.checkParameterIsNotNull(extras, "extras");
return new PushBean(alert, title, extras);
}
@NotNull
public String toString()
{
return "PushBean(alert=" + this.alert + ", title=" + this.title + ", extras=" + this.extras + ")";
}
public boolean equals(@Nullable Object paramObject)
{
if (this != paramObject)
{
if ((paramObject instanceof PushBean))
{
PushBean localPushBean = (PushBean)paramObject;
if ((!Intrinsics.areEqual(this.alert, localPushBean.alert)) || (!Intrinsics.areEqual(this.title, localPushBean.title)) || (!Intrinsics.areEqual(this.extras, localPushBean.extras))) {}
}
}
else {
return true;
}
return false;
}
}
四、结束语
基本上所有的理论都是为实战服务的,动手操作一遍会有意想不到的收获。
本文暂时没有评论,来添加一个吧(●'◡'●)