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

companion object和object 从kotlin转java分析

说明

companion object 中
companion类中的方法是普通的方法
在外部类中生成静态变量,静态companion 对象

object MyClass2 中
类中方法是普通方法
在MyClass2中生成静态变量,静态MyClass2对象,

一 companion object 使用 kotlin转java


package test.eclass Test1 {}fun main() {
//    MyClass.MyClass2.printHello()MyClass.printHello()}
class MyClass {var a  =10companion  object  {var b =1
//        @JvmStaticfun printHello() {println("Hello, World!")}}
}调用方法
//MyClass.printHello()------------------------------------------
// Test1.java
package test.e;import kotlin.Metadata;@Metadata(mv = {2, 0, 0},k = 1,xi = 48,d1 = {"\u0000\f\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002¨\u0006\u0003"},d2 = {"Ltest/e/Test1;", "", "()V", "untitled"}
)
public final class Test1 {
}
// MyClass.java
package test.e;import kotlin.Metadata;
import kotlin.jvm.internal.DefaultConstructorMarker;
import org.jetbrains.annotations.NotNull;@Metadata(mv = {2, 0, 0},k = 1,xi = 48,d1 = {"\u0000\u0014\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0006\u0018\u0000 \t2\u00020\u0001:\u0001\tB\u0005¢\u0006\u0002\u0010\u0002R\u001a\u0010\u0003\u001a\u00020\u0004X\u0086\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0005\u0010\u0006\"\u0004\b\u0007\u0010\b¨\u0006\n"},d2 = {"Ltest/e/MyClass;", "", "()V", "a", "", "getA", "()I", "setA", "(I)V", "Companion", "untitled"}
)
public final class MyClass {@NotNull**public static final Companion Companion = new Companion((DefaultConstructorMarker)null);**private int a = 10;private static int b = 1;public final int getA() {return this.a;}public final void setA(int var1) {this.a = var1;}@Metadata(mv = {2, 0, 0},k = 1,xi = 48,d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0005\n\u0002\u0010\u0002\n\u0000\b\u0086\u0003\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002J\u0006\u0010\t\u001a\u00020\nR\u001a\u0010\u0003\u001a\u00020\u0004X\u0086\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0005\u0010\u0006\"\u0004\b\u0007\u0010\b¨\u0006\u000b"},d2 = {"Ltest/e/MyClass$Companion;", "", "()V", "b", "", "getB", "()I", "setB", "(I)V", "printHello", "", "untitled"})public static final class Companion {private Companion() {}public final int getB() {return MyClass.b;}public final void setB(int var1) {MyClass.b = var1;}public final void printHello() {String var1 = "Hello, World!";System.out.println(var1);}// $FF: synthetic methodpublic Companion(DefaultConstructorMarker $constructor_marker) {this();}}
}
// Test1Kt.java
package test.e;import kotlin.Metadata;@Metadata(mv = {2, 0, 0},k = 2,xi = 48,d1 = {"\u0000\b\n\u0000\n\u0002\u0010\u0002\n\u0000\u001a\u0006\u0010\u0000\u001a\u00020\u0001¨\u0006\u0002"},d2 = {"main", "", "untitled"}
)
public final class Test1Kt {public static final void main() {MyClass.Companion.printHello();}// $FF: synthetic methodpublic static void main(String[] args) {main();}
}

二 object kotlin转java

package test.eclass Test1 {}fun main() {MyClass.MyClass2.printHello()
//    MyClass.printHello()}
class MyClass {var a  =10object MyClass2 {var b =1
//        @JvmStaticfun printHello() {println("Hello, World!")}}
}调用方法
//MyClass.printHello()------------------------------
// Test1.java
package test.e;import kotlin.Metadata;@Metadata(mv = {2, 0, 0},k = 1,xi = 48,d1 = {"\u0000\f\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002¨\u0006\u0003"},d2 = {"Ltest/e/Test1;", "", "()V", "untitled"}
)
public final class Test1 {
}
// MyClass.java
package test.e;import kotlin.Metadata;
import org.jetbrains.annotations.NotNull;@Metadata(mv = {2, 0, 0},k = 1,xi = 48,d1 = {"\u0000\u0014\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0006\u0018\u00002\u00020\u0001:\u0001\tB\u0005¢\u0006\u0002\u0010\u0002R\u001a\u0010\u0003\u001a\u00020\u0004X\u0086\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0005\u0010\u0006\"\u0004\b\u0007\u0010\b¨\u0006\n"},d2 = {"Ltest/e/MyClass;", "", "()V", "a", "", "getA", "()I", "setA", "(I)V", "MyClass2", "untitled"}
)
public final class MyClass {private int a = 10;public final int getA() {return this.a;}public final void setA(int var1) {this.a = var1;}@Metadata(mv = {2, 0, 0},k = 1,xi = 48,d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0005\n\u0002\u0010\u0002\n\u0000\bÆ\u0002\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002J\u0006\u0010\t\u001a\u00020\nR\u001a\u0010\u0003\u001a\u00020\u0004X\u0086\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0005\u0010\u0006\"\u0004\b\u0007\u0010\b¨\u0006\u000b"},d2 = {"Ltest/e/MyClass$MyClass2;", "", "()V", "b", "", "getB", "()I", "setB", "(I)V", "printHello", "", "untitled"})public static final class MyClass2 {@NotNull**public static final MyClass2 INSTANCE = new MyClass2();**private static int b = 1;private MyClass2() {}public final int getB() {return b;}public final void setB(int var1) {b = var1;}public final void printHello() {String var1 = "Hello, World!";System.out.println(var1);}}
}
// Test1Kt.java
package test.e;import kotlin.Metadata;@Metadata(mv = {2, 0, 0},k = 2,xi = 48,d1 = {"\u0000\b\n\u0000\n\u0002\u0010\u0002\n\u0000\u001a\u0006\u0010\u0000\u001a\u00020\u0001¨\u0006\u0002"},d2 = {"main", "", "untitled"}
)
public final class Test1Kt {public static final void main() {MyClass.MyClass2.INSTANCE.printHello();}// $FF: synthetic methodpublic static void main(String[] args) {main();}
}

相关文章:

companion object和object 从kotlin转java分析

说明 companion object 中 companion类中的方法是普通的方法 在外部类中生成静态变量,静态companion 对象 object MyClass2 中 类中方法是普通方法 在MyClass2中生成静态变量,静态MyClass2对象, 一 companion object 使用 kotlin转java pa…...

Spring MVC 执行流程:一个请求在 Spring MVC 中是如何执行的?

当用户发送一个 HTTP 向 Spring MVC 应用,该请求在 Spring MVC 的执行流程如下: 当用户向 Spring MVC 发起一个 HTTP 请求,该请求会被 Dispatcher Servlet(前端控制器)拦截;DispatcherServlet 调用 Handler…...

三主热备架构

1.要求 角色主机名软件IP地址用户client192.168.72.90keepalivedvip192.168.72.100masterserverAkeepalived, nginx192.168.72.30backupserverBkeepalived, nginx192.168.72.31backupserverCkeepalived, nginx192.168.72.32webtomcat1tomcat192.168.72.41webtomcat2tomcat192.1…...

HTML 表单处理进阶:验证与提交机制的学习心得与进度(二)

步步为营:表单提交机制全面解析 提交方式详解 GET 与 POST 对比 在 HTML 表单提交中,GET 和 POST 是最为常用的两种提交方式,它们在诸多方面存在显著差异。 安全性:GET 方式将表单数据附加在 URL 的查询字符串中,数…...

JavaScript | 爬虫逆向 | 语法基础| 01

一、摘要 实践是最好的导师 二、环境配置 在开始之前,需要确保你的计算机上已经安装了 Node.js。Node.js 是一个开源的、跨平台的 JavaScript 运行时环境,它允许你在服务器端运行 JavaScript 代码。 1. 下载 安装地址:https://nodejs.org…...

python解决多个矢量点图层合并为一个点图层

1、解决矢量点图层的合并 2、解决多个点图层分别合并为不同图层(一个文件夹下所有点图层合并为一个图层,以下代码为两个文件夹,分别合并为两个总的图层) import geopandas as gpd import os import pandas as pddef merge_shapef…...

VL开源模型实现文本生成图片

一、 基础知识 根据描述生成图片的视觉-语言模型(Vision-Language Models, VL 模型)是近年来多模态生成领域的热点研究方向。这些模型能够根据自然语言描述生成高质量的图像,广泛应用于艺术创作、设计辅助、虚拟场景构建等领域。 1 根据描述…...

字节跳动实习生主导开发强化学习算法,助力大语言模型性能突破

目录 禹棋赢的背景与成就 主要成就 DAPO算法的技术细节 算法优势 禹棋赢的研究历程 关键时间节点 字节跳动的“Top Seed人才计划” 计划特点 小编总结 在大模型时代,经验不再是唯一的衡量标准,好奇心、执行力和对新技术的敏锐洞察力成为推动技术…...

九、JavaScript作用域、预解析

一、JavaScript作用域 1.JavaScript作用域 ①代码名字(变量)在某个范围内起作用和效果 目的是为了提高程序的可靠性更重要的是减少命名冲突 ②js的作用域(es6)之前:全局作用域 局部作用域 ③全局作用域:整…...

前后端+数据库的项目实战:hbu迎新网-较复杂(下)javaweb

目录 十一、实现对内容的富文本编辑(换行、图片颜色等等样式) (1)下载富文本编辑器,引入资源 (2)将原项目的内容部分替换为富文本编辑器 1、替换添加页面 2、替换修改页面(和添…...

Java-模块二-2

整数类型 byte:在 Java 中占用8位(1字节),因此它的取值范围是从 -128 到 127。这是最小的整数类型,适合用于节省空间的情况。 short:这种类型的大小是16位(2字节),允许的…...

Redis、Memcached应用场景对比

环境 Redis官方网站: Redis - The Real-time Data Platform Redis社区版本下载地址:Install Redis | Docs Memcached官方网站:memcached - a distributed memory object caching system Memcached下载地址:memcached - a dis…...

【单片机通信技术应用——学习笔记三】液晶屏显示技术,取模软件的应用

一、液晶显示技术简介 1.RGB信号线 RGB是一种色彩模式,是工业界的一种颜色标准,是通过红(R)、绿(G)、蓝(B)三个颜色通道的变化,以及它们相互之间的叠加来得到各式各样的…...

MySQL颠覆版系列————MySQL新特性(开启数据库的新纪元)上篇

文章目录 前言一、窗口函数(Window Functions)1.1 窗口函数概念1.2 常见的窗口函数 二、公用表表达式(Common Table Expressions, CTEs)2.1 公用表表达式的概念2.2 常见的公用表表达式 三、JSON增强3.1 JSON增强的概念3.2 常见的J…...

MySQL 调优:查询慢除了索引还能因为什么?

文章目录 情况一:连接数过小情况二:Buffer Pool 太小 MySQL 查询慢除了索引还能因为什么?MySQL 查询慢,我们一般也会想到是因为索引,但除了索引还有哪些原因会导致数据库查询变慢呢? 以下以 MySQL 中一条 S…...

Java实习生面试题(2025.3.23 be)

一、v-if与v-show的区别 v-show 和 v-if 都是 Vue 中的条件渲染指令,它们的主要区别在于渲染策略:v-if 会根据条件决定是否编译元素,而 v-show 则始终编译元素,只是通过改变 CSS 的 display 属性来控制显示与隐藏。 二、mybatis-…...

如何在百度搜索上删除与自己名字相关的资料

个人信息的网络足迹如同一张无形的网,将我们与世界的每一个角落紧密相连。然而,当某些与自己名字相关的资料不再希望被公众轻易检索到时,如何在百度搜索中有效“隐身”,成为了一个亟待解决的问题。面对复杂多变的网络环境&#xf…...

【C语言】C语言使用随机数srand,rand

C语言使用随机数srand,rand 可直接编译使用&#xff1a; #include <stdio.h> #include <time.h> #include <stdlib.h> #include <unistd.h>/* c语言提供的跟随机数有关的函数:int rand(void);返回值:产生的随机数void srand(unsiqned int seed);参数…...

为容器指定固定IP地址

文章目录 为容器指定固定IP地址可以通过以下步骤实现&#xff0c;适用于Docker环境&#xff1a;**方法一&#xff1a;使用Docker自定义桥接网络****方法二&#xff1a;Docker Compose配置****关键注意事项** 为容器指定固定IP地址可以通过以下步骤实现&#xff0c;适用于Docker…...

kube-score K8S Yaml静态代码分析工具详解

kube-score 是一款专注于 Kubernetes 配置文件的静态代码分析工具&#xff0c;旨在通过自动化检查帮助用户识别资源配置中的潜在问题&#xff0c;并遵循最佳实践以提升集群的安全性、稳定性和性能。以下是其核心功能、使用方法和应用场景的详细解析&#xff1a; 一、核心功能与…...

Spring Boot 整合 Elasticsearch 实践:从入门到上手

引言 Elasticsearch 是一个开源的分布式搜索引擎&#xff0c;广泛用于日志分析、搜索引擎、数据分析等场景。本文将带你通过一步步的教程&#xff0c;在 Spring Boot 项目中整合 Elasticsearch&#xff0c;轻松实现数据存储与查询。 1. 创建 Spring Boot 项目 首先&#xff…...

使用外部事件检测接入 CDH 大数据管理平台告警

CDH 大数据管理平台 CDH&#xff08;Cloudera Distribution Hadoop&#xff09;是一个企业级的大数据平台&#xff0c;由 Cloudera 公司提供&#xff0c;它包含了 Apache Hadoop 生态系统中的多种开源组件&#xff0c;并对其进行了优化和集成&#xff0c;以支持大规模数据存储…...

RabbitMQ八股文

RabbitMQ RabbitMQ 核心概念与组件1. RabbitMQ 核心组件及其作用1.1 生产者&#xff08;Producer&#xff09;1.2 交换机&#xff08;Exchange&#xff09;1.3 队列&#xff08;Queue&#xff09;1.4 绑定&#xff08;Binding&#xff09;1.5 消费者&#xff08;Consumer&#…...

MongoDB(五) - Studio 3T 下载与安装教程

文章目录 前言一、Studio 3T 简介二、下载及安装1. 下载2. 安装 三、使用Studio 3T连接MongoDB 前言 本文旨在全面且深入地为你介绍 Studio 3T。从其丰富的功能特性、跨平台使用的便捷性&#xff0c;到详细的下载安装步骤&#xff0c;以及关键的连接 MongoDB 操作&#xff0c;…...

2025高频面试算法总结篇【链表堆栈队列】

文章目录 直接刷题链接直达反转链表环形链表判断一个序列是否为合理的出栈顺序最长有效括号旋转链表复杂链表的复制约瑟夫环问题滑动窗口最大值 直接刷题链接直达 反转链表 206. 反转链表 环形链表 141. 环形链表142. 环形链表 II 判断一个序列是否为合理的出栈顺序 946.…...

Java主流开发框架之请求响应常用注释

1.RestController 标记一个类为 REST 控制器&#xff0c;处理 HTTP 请求并直接返回数据&#xff08;如 JSON/XML&#xff09;&#xff0c;而不是视图&#xff08;如 HTML&#xff09;&#xff0c;一般是放在类的上边 RestController public class UserController {GetMapping…...

汽车制造MES

一、整体生产工序 整车的车间主要分为4个部分&#xff1a;冲压、焊装、涂装、总装、整车入库 系统架构 二、车间概括 1.冲压车间 2.焊装车间 3.涂装车间 4.总装车间 1.整车装配的部件都要可追溯、数据实时性要求高、涉及分装与总装的协调、物流配送的协调、质量批处理的协调、…...

LeetCode 2643.一最多的行:模拟(更新答案)

【LetMeFly】2643.一最多的行&#xff1a;模拟(更新答案) 力扣题目链接&#xff1a;https://leetcode.cn/problems/row-with-maximum-ones/ 给你一个大小为 m x n 的二进制矩阵 mat &#xff0c;请你找出包含最多 1 的行的下标&#xff08;从 0 开始&#xff09;以及这一行中…...

固定翼无人机姿态和自稳模式

固定翼无人机的‌姿态模式&#xff08;Attitude/Angle Mode&#xff09;‌和‌自稳模式&#xff08;Stabilize Mode&#xff09;‌是两种常见的飞行控制模式&#xff0c;它们在飞控系统介入程度、操作逻辑及适用场景上有显著区别。以下是两者的详细对比及使用指南&#xff1a; …...

K8S中若要挂载其他命名空间中的 Secret

在Kubernetes&#xff08;k8s&#xff09;里&#xff0c;若要挂载其他命名空间中的Secret&#xff0c;你可以通过创建一个 Secret 的 ServiceAccount 和 RoleBinding 来实现对其他命名空间 Secret 的访问&#xff0c;接着在 Pod 中挂载这个 Secret。下面是详细的步骤和示例代码…...