Kotlin学习 - 数据类与单例类

这篇具有很好参考价值的文章主要介绍了Kotlin学习 - 数据类与单例类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据类

在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

通过数据类与单例类学习可以看出Kotlin对Java中的各种繁琐代码进行了优化,可以使程序员把更多精力放在业务逻辑上面,也简化了代码行数,减少了代码阅读量。文章来源地址https://www.toymoban.com/news/detail-486307.html

到了这里,关于Kotlin学习 - 数据类与单例类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式——C++11实现单例模式(饿汉模式、懒汉模式),与单例的进程

    本文将介绍单例模式,使用C++11实现多个版本的单例模式,分析各自的优缺点。最后提及如何实现一个单例的进程。 单例模式属于创建型模式,提供了一种创建对象的方式。 单例模式确保一个类只有一个实例。通过一个类统一地访问这个实例。 思想:将构造函数设置为私有

    2024年02月09日
    浏览(50)
  • C++中特殊类的设计与单例模式的简易实现

    对于这种特殊类的设计我们一般都是优先考虑私有构造函数。 然后对于一些特殊要求就直接通过静态成员函数的实现来完成。  这里选择禁掉拷贝构造函数和拷贝函数是为了防止将已创建的对象去拷贝构造新的对象。  这里如果没有禁掉operator new和operator delete的话就会导致以

    2024年01月18日
    浏览(47)
  • Java 基础进阶篇(一)——— static 静态关键字与单例模式

    static:代表静态的意思,可以修饰成员变量,可以修饰成员方法。 static 修饰方法之后称为 静态方法(类方法) ,修饰成员变量之后称为 静态成员变量(类变量) 。 static 修饰后的成员变量, 可以被类的所有对象共享 (访问、修改) 。 静态成员变量 实例成员变量 概述 有

    2024年02月01日
    浏览(87)
  • Kotlin 1.9 新特性预览:data object (数据单例)

    data object (数据单例) 是 Kotlin 1.9 中预定引入的新特性 ,但其实从 1.7.20 开始就可以预览了。启动预览需要在 gradle 中升级 KotlinCompileVersion: 接下来让我们看看它有哪些特点。 data object 相对于普通 object ,在调用 toString() 的时候,前者的可读性更好,输出类名,不再携带 HashC

    2024年02月12日
    浏览(38)
  • 第08章_面向对象编程(高级)(static,单例设计模式,理解mian方法,代码块,final,抽象类与抽象方法,接口,内部类,枚举类,注解,包装类)

    回顾类中的实例变量(即非static的成员变量) 创建两个Circle对象: Circle类中的变量radius是一个实例变量(instance variable),它属于类的每一个对象,c1中的radius变化不会影响c2的radius,反之亦然。 如果想让一个成员变量被类的所有实例所共享,就用static修饰即可,称为类变量(

    2024年01月25日
    浏览(49)
  • kotlin实现单例模式

    kotlin实现单例模式,大体分为两种方式,一种饿汉式单例模式,一种懒汉式单例模式。 1.饿汉式单例模式 在类前面加上object,就实现了饿汉式单例模式: 在kotlin中规定,使用object修饰的类只能有一个实例。这种方式基本就能应对大部分的情况,而且这种方式在类加载

    2024年02月06日
    浏览(34)
  • Kotlin的5种单例模式

    前言 最近在学习Kotlin这门语言,在项目开发中,运用到了单例模式。因为其表达方式与Java是不同的。所以对不同单例模式的实现进行了分别探讨。主要单例模式实现如下: 饿汉式 懒汉式 线程安全的懒汉式 双重校验锁式 静态内部类式 PS:该篇文章不讨论单例模式的运用场景

    2024年02月01日
    浏览(36)
  • kotlin实现java的单例模式

    Kotlin的5种单例模式

    2024年02月10日
    浏览(37)
  • Kotlin单例模式的一种懒汉模式写法

    Kotlin单例模式的一种懒汉模式写法 kotlin用object实现单例模式,companion object与java静态_zhangphil的博客-CSDN博客 kotlin中很容易使用object实现java中的单例模式。由于kotlin中没有static修饰词,可以用companion object实现Java中的static效果。kotlin用object实现单例模式,companion object与java静态

    2024年02月12日
    浏览(36)
  • Error code: 128 通常是Git返回的错误代码

    这个错误信息表明在从GitHub克隆存储库时发生了问题。 导致错误的原因可能是网络或, 未初始化为 Git 仓库 者是其他原因。 我采用解决方法:直接clone到目标仓库,然后重新运行终端就可以了。 git clone https://github.com/Stability-Al/stablediffusion.git \\\"D:AIstable-diffusion-webuirepositori

    2024年03月18日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包