专业的JAVA编程教程与资源

网站首页 > java教程 正文

使用Kotlin定义一个JavaBean,和Java的差异很大

temp10 2025-02-15 17:26:14 java教程 6 ℃ 0 评论

一、内容概要

在Java中要想创建一个数据类型就需要创建一个JavaBean(一个最普通的java类)并实现其对应的getter()和setter()方法,这两个方法可以自己手动写也可以用工具帮助来生成,总之这些是必不可的。而在Kotlin中需要使用data class来定义一个数据类,如果对Kotlin使用习惯,则相对于java可以省略掉不少模板代码。


使用Kotlin定义一个JavaBean,和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;
  }
}

四、结束语

基本上所有的理论都是为实战服务的,动手操作一遍会有意想不到的收获。


本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表