数据类
在Java代码中,数据类通常需要重写equals()、hashCode()、toString()
这几个方法。虽然有快捷方式可以自动生成,但是还是要我们去点击生成下,并且一个简单的数据类就算没有其他复杂逻辑看着也挺繁琐的,代码如下:
public class UserBean {
private String name;
private String pwd;
public UserBean(String name, String pwd) {
this.name = name;
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
...
@Override
public String toString() {
return "UserBean{" +
"name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UserBean userBean = (UserBean) o;
return name.equals(userBean.name) && pwd.equals(userBean.pwd);
}
@Override
public int hashCode() {
return Objects.hash(name, pwd);
}
Kotlin中的数据类自动帮我们解决了这个问题,同样新建一个数据类,代码如下:
data class UserBean(var name: String, var pwd: String)
只需要一行代码就可以实现了!神奇的地方就在于data
这个关键字,当在一个类前面声明了data
关键字时,就表明你希望这个类是一个数据类,Kotlin会根据主构造函数中的参数帮你将equals()、hashCode()、toString()
等固定且无实际逻辑意义的方法自动生成,从而大大减少了开发的工作量。
数据类使用:
fun main() {
val user1 = UserBean("tom", "123")
val user2 = UserBean("tom", "123")
println(user1)
println(user1 == user2)
}
//运行结果
//UserBean(name=tom, pwd=123)
//true
单例类
在Kotlin中创建一个单例类的方式极其简单,只需要将class
关键字改成object
关键字即可。代码如下:
object Singleton {
fun test(){
println("Singleton test!!")
}
}
单例类的使用:
fun main() {
Singleton.test()
}
看上去像是静态方法的调用,但其实Kotlin在背后自动帮我们创建了一个Singleton类的实例,并且保证全局只会存在一个Singleton实例。
反编译上面单例类:
public final class Singleton {
@NotNull
public static final Singleton INSTANCE;
public final void test() {
String var1 = "Singleton test!!";
boolean var2 = false;
System.out.println(var1);
}
private Singleton() {
}
static {
Singleton var0 = new Singleton();
INSTANCE = var0;
}
}
在反编译main
调用函数:
public static final void main() {
Singleton.INSTANCE.test();
}
能看出实际调用的是单例中的实例Singleton.INSTANCE
。文章来源:https://www.toymoban.com/news/detail-486307.html
通过数据类与单例类学习可以看出Kotlin对Java中的各种繁琐代码进行了优化,可以使程序员把更多精力放在业务逻辑上面,也简化了代码行数,减少了代码阅读量。文章来源地址https://www.toymoban.com/news/detail-486307.html
到了这里,关于Kotlin学习 - 数据类与单例类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!