Kotlin单例、数据类、静态

文章目录

  • 1. 数据类
  • 2. 单例
  • 3. 静态

1. 数据类

data class Cellphone(val brand: String, val price: Double)

自动生成了get set hashcode equals toString等方法。通过反编译(打开AS,在Tools-Kotlin-ShowBytecode-Decompile)可以得到如下结果

public final class Cellphone {@NotNullprivate final String brand;private final double price;@NotNullpublic final String getBrand() {return this.brand;}public final double getPrice() {return this.price;}public Cellphone(@NotNull String brand, double price) {Intrinsics.checkNotNullParameter(brand, "brand");super();this.brand = brand;this.price = price;}@NotNullpublic final String component1() {return this.brand;}public final double component2() {return this.price;}@NotNullpublic final Cellphone copy(@NotNull String brand, double price) {Intrinsics.checkNotNullParameter(brand, "brand");return new Cellphone(brand, price);}// $FF: synthetic methodpublic static Cellphone copy$default(Cellphone var0, String var1, double var2, int var4, Object var5) {if ((var4 & 1) != 0) {var1 = var0.brand;}if ((var4 & 2) != 0) {var2 = var0.price;}return var0.copy(var1, var2);}@NotNullpublic String toString() {return "Cellphone(brand=" + this.brand + ", price=" + this.price + ")";}public int hashCode() {String var10000 = this.brand;return (var10000 != null ? var10000.hashCode() : 0) * 31 + Double.hashCode(this.price);}public boolean equals(@Nullable Object var1) {if (this != var1) {if (var1 instanceof Cellphone) {Cellphone var2 = (Cellphone)var1;if (Intrinsics.areEqual(this.brand, var2.brand) && Double.compare(this.price, var2.price) == 0) {return true;}}return false;} else {return true;}}
}

2. 单例

class改成object,其他的跟java里面差不多

object Singleton {
}

3. 静态

companion object
@JvmField - 修饰静态变量
@JvmStatic - 修饰静态方法
@JvmField 和 @JvmStatic 只能写在 object 修饰的类或者 companion object 里,写法虽然有些别扭,但是效果是真的是按 static 来实现的

class BookKotlin {companion object {@JvmFieldvar nameStatic: String = "BB"@JvmStaticfun speakStatic() {}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/47218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python—爬虫爬取电影页面实例

下面是一个简单的爬虫实例,使用Python的requests库来发送HTTP请求,并使用lxml库来解析HTML页面内容。这个爬虫的目标是抓取一个电影网站,并提取每部电影的主义部分。 首先,确保你已经安装了requests和lxml库。如果没有安装&#x…

Fast Planner规划算法(一)—— Fast Planner前端

本系列文章用于回顾学习记录Fast-Planner规划算法的相关内容,【本系列博客写于2023年9月,共包含四篇文章,现在进行补发第一篇,其余几篇文章将在近期补发】 一、Fast Planner前端 Fast Planner的轨迹规划部分一共分为三个模块&…

4.基础知识-数据库技术基础

基础知识 一、数据库基本概念1、数据库系统基础知识2、三级模式-两级映像3、数据库设计4、数据模型:4.1 E-R模型★4.2 关系模型★ 5、关系代数 二、规范化和并发控制1、函数依赖2、键与约束3、范式★3.1 第一范式1NF实例3.2 第二范式2NF3.3 第三范式3NF3.4 BC范式BC…

rockchip的yolov5 rknn python推理分析

rockchip的yolov5 rknn推理分析 对于rockchip给出的这个yolov5后处理代码的分析,本人能力十分有限,可能有的地方描述的很不好,欢迎大家和我一起讨论,指出我的错误!!! RKNN模型输出 将官方的Y…

直方图的最大长方形面积

前提知识:单调栈基础题-CSDN博客 子数组的最大值-CSDN博客 题目描述: 给定一个非负数(0和正数),代表直方图,返回直方图的最大长方形面积,比如,arr {3, 2, 4, 2, 5}&#xff0c…

景区导航导览系统:基于AR技术+VR技术的功能效益全面解析

在数字化时代背景下,游客对旅游体验的期望不断提升。游客们更倾向于使用手机作为旅行的贴身助手,不仅因为它能提供实时、精准的导航服务,更在于其融合AR(增强现实)、VR(虚拟现实)等前沿技术&…

C++编程:实现一个跨平台安全的定时器Timer模块

文章目录 0. 概要1. 设计目标2. SafeTimer 类的实现2.1 头文件 safe_timer.h源文件 safe_timer.cpp 3. 工作流程图4. 单元测试 0. 概要 对于C应用编程,定时器模块是一个至关重要的组件。为了确保系统的可靠性和功能安全,我们需要设计一个高效、稳定的定…

十三、网络编程正则表达式设计模式(模块23)

网络编程&正则表达式&设计模式 模块23_网络编程&正则表达式&设计模式第一章.网络编程1.软件结构2.服务器概念3.通信三要素4.UDP协议编程4.1.客户端(发送端)4.2.服务端(接收端) 5.TCP协议编程4.1.编写客户端4.2.编写服务端 6.文件上传6.1.文件上传客户端以及服务…

AI学习指南机器学习篇-SOM算法原理

AI学习指南机器学习篇-SOM算法原理 自组织映射(Self-Organizing Map, SOM)算法是一种常用的无监督学习算法,被广泛应用于数据聚类、可视化和模式识别等领域。SOM算法可以帮助我们发现数据中的隐藏结构,并且能够在高维空间中有效地…

【开发踩坑】 MySQL不支持特殊字符(表情)插入问题

背景 线上功能报错: Cause:java.sql.SQLException:Incorrect string value:xFO\x9F\x9FxBO for column commentat row 1 uncategorized SQLException; SQL state [HY000]:error code [1366]排查 初步觉得是编码问题(utf8 — utf8mb4) 参考上…

Leetcode 2520. 统计能整除数字的位数

问题描述: 给你一个整数 num ,返回 num 中能整除 num 的数位的数目。 如果满足 nums % val 0 ,则认为整数 val 可以整除 nums 。 示例 1: 输入:num 7 输出:1 解释:7 被自己整除&#xff0…

浅谈芯片验证中的仿真运行之 timescale (五)提防陷阱

一 仿真单位 timeunit 我们知道,当我们的代码中写清楚延时语句时,若不指定时间单位,则使用此单位; 例如: `timescale 1ns/1ps 则 #15 语句表示delay15ns; 例:如下代码,module a 的timescale是1ns/1ps, module b 是1ps/1ps; module b中的clk,频率是由输入参…

C++--fill

把[first,last)之间的元素填充为val。 template<class ForwardIterator, class Type> void fill( ForwardIterator first, //起始迭代器 ForwardIterator last, //结束迭代器 const Type& val //设置的值 );源码剖析 template<class ForwardIterator, c…

HTML开发笔记:1.环境、标签和属性、CSS语法

一、环境与新建 在VSCODE里&#xff0c;加载插件&#xff1a;“open in browser” 然后新建一个文件夹&#xff0c;再在VSCODE中打开该文件夹&#xff0c;在右上角图标新建文档&#xff0c;一定要是加.html&#xff0c;不要忘了文件后缀 复制任意一个代码比如&#xff1a; <…

primeflex教学笔记20240720, FastAPI+Vue3+PrimeVue前后端分离开发

练习 先实现基本的页面结构&#xff1a; 代码如下&#xff1a; <template><div class"flex p-3 bg-gray-100 gap-3"><div class"w-20rem h-12rem bg-indigo-200 flex justify-content-center align-items-center text-white text-5xl">…

C++关系运算符重载 函数运算符重载

#include <iostream> #include <string> using namespace std; //实现关系运算符重载 仿函数 class Person { public:Person(int Age,string Name){age Age;name Name;}int age;string name;int operator()(){return age ;}bool operator(const Person& p)…

用html做python教程01

用html做python教程01 前言开肝构思实操额外修饰更换字体自适应 最后 前言 今天打开csdn的时候&#xff0c;看见csdn给我推荐了一个python技能书。 说实话&#xff0c;做得真不错。再看看我自己&#xff0c;有亿点差距&#x1f61f;。 开肝 先创建一个文件&#xff0c;后缀…

获取本地时间(Linux下,C语言)

一、函数 #include <time.h> time_t time(time_t *tloc);函数功能&#xff1a;获取本机时间&#xff08;以秒数存储&#xff0c;从1970年1月1日0:0:0开始到现在&#xff09;。返回值&#xff1a;获得的秒数&#xff0c;如果形参非空&#xff0c;返回值也可以通过传址调用…

mmrotate仓库中 “主要模型” 及其 “配置文件” 的列表

mmrotate 目录: mmrotate 仓库中的主要模型和配置Background and Motivation 背景与动机Methods Overview 方法概述1. CFACFA: Convex-hull Feature Adaptation for Oriented and Densely Packed Object DetectionCFA:用于定向和密集对象检测的凸包特征适应2. ConvNeXtConvNeX…

昇思25天学习打卡营第9天 | 使用静态图加速

用静态图加速在MindSpore中的实践体验 在深入学习MindSpore框架的过程中&#xff0c;我特别关注了动态图和静态图两种模式的运行机制及其各自的优缺点。通过实际编程实验和应用&#xff0c;我对静态图加速的效果和应用场景有了更深入的了解。 动态图与静态图的对比 在开始使…