• 面向对象 数据类data class,密封类Sealed Class


    一、数据类
    1、格式data class 类名(var param1 :数据类型,...){}
    2、自动生成tostring,equals,hashcode方法
    3、自动生成getter,setter,相比java代码,十分简介
    //在 Java 中,我们会这么写
    public class Cellphone {
        
        String brand;
        double price;
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Cellphone cellphone = (Cellphone) o;
            return Double.compare(cellphone.price, price) == 0 &&
                    Objects.equals(brand, cellphone.brand);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(brand, price);
        }
    
        @Override
        public String toString() {
            return "Cellphone{" +
                    "brand='" + brand + '\'' +
                    ", price=" + price +
                    '}';
        }
    }
    
    //在 Kotlin 中,你会发现是如此的简洁
    data class Cellphone(val brand: String, val price: Double)
    data class Person(var name: String, var age: Int)
    
    
        private fun testData() {
            var per = Person("jack", 12);
            Log.i("aaa", per.name)
            Log.i("aaa", per.toString())
        }

    二、密封类

    通常情况下使用枚举来封装有限的集合值,kotlin提供了新的解决方法 Sealed Class 密封类
    /**
    * 密封类,封装类
    * 1、通常限定一些有限集合的状态值,如
    * 网络状态:成功,失败
    * 账户状态:vip,普通
    * 2、与when配合使用,无需if-else
    */
    1、定义
    sealed class Result<out T : Any> {
        data class Success<out T : Any>(val data: T) : Result<T>()
        data class Error(val exception: Exception) : Result<Nothing>()
    }

     2、使用

        private fun testSealed() {
            val result = if (true) {
                Result.Success("success")
            } else {
                Result.Error(Exception("error"))
            }
            when (result) {
                is Result.Success -> print(result.data)
                is Result.Error -> print(result.exception)
            }
        }
  • 相关阅读:
    WCF基础教程之开篇:创建、测试和调用WCF
    程序员必须知道的几个Git代码托管平台
    2015继续任性——不会Git命令,照样玩转Git
    何必苦等VS2015?来看看VS2013下实现移动端的跨平台开发
    Android Studio 1.0.2项目实战——从一个APP的开发过程认识Android Studio
    (转)创建Graphics的三种方法
    sql自增长列重新从1计算
    IT之人生感悟
    c# 高效率导出多维表头excel
    SQL 之witn as语法
  • 原文地址:https://www.cnblogs.com/suiyilaile/p/16540501.html
Copyright © 2020-2023  润新知