当前位置: 首页 > news >正文

Kotlin Class

普通 Class

kotlin

class TestClz {val name: String = "hsw"val age: Int = 18
}

java

public final class TestClz {@NotNullprivate final String name = "hsw";private final int age = 18;@NotNullpublic final String getName() {return this.name;}public final int getAge() {return this.age;}
}

转换为Java后的变化

  1. 类被 final 修饰,不可继承;加上open 可以去掉 final
  2. var修饰的属性添加了get set 方法 , val 只有·get 方法

data class

kotlin

data class TestClz(val name: String, var age: Int)

java

public final class TestClz {@NotNullprivate final String name;private int age;@NotNullpublic final String getName() {return this.name;}public final int getAge() {return this.age;}public final void setAge(int var1) {this.age = var1;}public TestClz(@NotNull String name, int age) {Intrinsics.checkNotNullParameter(name, "name");super();this.name = name;this.age = age;}@NotNullpublic final String component1() {return this.name;}public final int component2() {return this.age;}@NotNullpublic final TestClz copy(@NotNull String name, int age) {Intrinsics.checkNotNullParameter(name, "name");return new TestClz(name, age);}// $FF: synthetic methodpublic static TestClz copy$default(TestClz var0, String var1, int var2, int var3, Object var4) {if ((var3 & 1) != 0) {var1 = var0.name;}if ((var3 & 2) != 0) {var2 = var0.age;}return var0.copy(var1, var2);}@NotNullpublic String toString() {return "TestClz(name=" + this.name + ", age=" + this.age + ")";}public int hashCode() {String var10000 = this.name;return (var10000 != null ? var10000.hashCode() : 0) * 31 + Integer.hashCode(this.age);}public boolean equals(@Nullable Object var1) {if (this != var1) {if (var1 instanceof TestClz) {TestClz var2 = (TestClz)var1;if (Intrinsics.areEqual(this.name, var2.name) && this.age == var2.age) {return true;}}return false;} else {return true;}}
}

转换为Java后的变化

  1. 类被 final 修饰,不可继承;加上open 可以去掉 final
  2. var修饰的属性添加了get set 方法 , val 只有·get 方法
  3. 实现了 toString equal hashCode 方法
  4. 类似于java bean

object

object TestClz {val name: String = "hsw"var age: Int = 18fun getInfo(): String {return "${name}-${age}"}
}
public final class TestClz {@NotNullprivate static final String name;private static int age;@NotNullpublic static final TestClz INSTANCE;@NotNullpublic final String getName() {return name;}public final int getAge() {return age;}public final void setAge(int var1) {age = var1;}@NotNullpublic final String getInfo() {return name + '-' + age;}private TestClz() {}static {TestClz var0 = new TestClz();INSTANCE = var0;name = "hsw";age = 18;}
}

转换为Java后的变化

  1. 类被 final 修饰,不可继承;加上open 可以去掉 final
  2. var修饰的属性添加了get set 方法 , val 只有·get 方法
  3. 饿汉式实现了单例
  4. java 不可直接调用get set 需要通过INSTANCE , 属性和方法 加上@JvmStatic 可以转换为静态属性/方法 直接调用

内部类

class TestClz {val name: String = "hsw"companion object {val grade = 12Lfun getInfo() {println("name-$name")}}object CCS {val grade = 12Lfun getSome() {println("name-$name")}}class Info {val grade = 12Lfun getSome() {println("name-$name")}}inner class WC {val grade = 12Lfun getSome() {println("name-${name}")}}
}
public final class TestClz {@NotNullprivate final String name = "hsw";private static final long grade = 12L;@NotNullpublic static final Companion Companion = new Companion((DefaultConstructorMarker)null);@NotNullpublic final String getName() {return this.name;}// companion 伴生对象// kotlin 可直接访问属性和方法// java 需要通过 Companion 对象访问public static final class Companion {public final long getGrade() {return TestClz.grade;}public final void getInfo() {}private Companion() {}// $FF: synthetic methodpublic Companion(DefaultConstructorMarker $constructor_marker) {this();}}// object 相当于通过单例实现静态内部类对象public static final class CCS {private static final long grade;@NotNullpublic static final CCS INSTANCE;public final long getGrade() {return grade;}public final void getSome() {}private CCS() {}static {CCS var0 = new CCS();INSTANCE = var0;grade = 12L;}}// 普通 class 相当于静态内部类,需要实例化调用方法public static final class Info {private final long grade = 12L;public final long getGrade() {return this.grade;}public final void getSome() {}}// inner class 内部类,可以直接使用外部类的属性和方法public final class WC {private final long grade = 12L;public final long getGrade() {return this.grade;}public final void getSome() {String var1 = "name-" + TestClz.this.getName();System.out.println(var1);}})
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MQTT是什么,物联网
  • 微信小程序中wx.navigateBack()页面栈返回上一页时执行上一页的方法或修改上一页的data属性值
  • 【Sql Server修改列类型错误信息:对象名依赖于列】
  • Python从Excel表中查找指定数据填入新表
  • 对controller层进行深入学习
  • iOS 开发中,异步渲染和异步绘制
  • C++ | Leetcode C++题解之第225题用队列实现栈
  • java-数据库的作用
  • 记录Linux安装go环境的一个坑
  • CentOS 系统监控项
  • pnpm workspace使用教程【Monorepo项目】
  • linux之内存泄漏分析
  • 从零开始学习嵌入式----C语言框架梳理与后期规划
  • 哈斯机床采集数据
  • E. Beautiful Array(cf954div3)
  • @angular/forms 源码解析之双向绑定
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • github从入门到放弃(1)
  • js如何打印object对象
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • python3 使用 asyncio 代替线程
  • QQ浏览器x5内核的兼容性问题
  • webpack入门学习手记(二)
  • web标准化(下)
  • 关于for循环的简单归纳
  • 缓存与缓冲
  • 基于axios的vue插件,让http请求更简单
  • 理解在java “”i=i++;”所发生的事情
  • 日剧·日综资源集合(建议收藏)
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 我是如何设计 Upload 上传组件的
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • Semaphore
  • 阿里云API、SDK和CLI应用实践方案
  • #宝哥教你#查看jquery绑定的事件函数
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (libusb) usb口自动刷新
  • (分布式缓存)Redis持久化
  • (三) diretfbrc详解
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (四)汇编语言——简单程序
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .bashrc在哪里,alias妙用
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .Net mvc总结
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net 发送邮件
  • .Net 中Partitioner static与dynamic的性能对比
  • .net2005怎么读string形的xml,不是xml文件。