<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>7.1 Java 互操作 on 编程那些事儿</title><link>https://before80.github.io/prgms/Kotlin/interoperability/7.1-Javainterop/</link><description>Recent content in 7.1 Java 互操作 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 13 Sep 2026 18:20:56 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Kotlin/interoperability/7.1-Javainterop/index.xml" rel="self" type="application/rss+xml"/><item><title>7.1.1 与 Java 的比较</title><link>https://before80.github.io/prgms/Kotlin/interoperability/7.1-Javainterop/7.1.1-ComparisonToJava/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/interoperability/7.1-Javainterop/7.1.1-ComparisonToJava/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/comparison-to-java.html"&gt;https://kotlinlang.org/docs/comparison-to-java.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="711-与-java-的比较"&gt;7.1.1 与 Java 的比较&lt;/h1&gt;
&lt;h2 id="some-java-issues-addressed-in-kotlin"&gt;Kotlin 解决了 Java 的一些问题&lt;/h2&gt;
&lt;p&gt;Kotlin 修复了 Java 存在的一系列问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;空引用&lt;a href="../../../languageguide/5.9-NullSafety/"&gt;由类型系统控制&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;a href="../7.1.2-JavaInterop/#java-generics-in-kotlin"&gt;没有原始类型&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kotlin 中的数组是&lt;a href="../../../languageguide/5.4-Types/5.4.7-Arrays/"&gt;不变的&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kotlin 有真正的&lt;a href="../../../languageguide/5.7-Functions/5.7.2-Lambdas/#function-types"&gt;函数类型&lt;/a&gt;，而不是 Java 的 SAM 转换&lt;/li&gt;
&lt;li&gt;&lt;a href="../../../languageguide/5.11-Generics/#use-site-variance-type-projections"&gt;使用处型变&lt;/a&gt;无需通配符&lt;/li&gt;
&lt;li&gt;Kotlin 没有受检&lt;a href="../../../languageguide/5.6-Exceptions/"&gt;异常&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../../../libraryguides/9.1-Standardlibrary/9.1.1-Collections/9.1.1.1-CollectionsOverview/"&gt;为只读集合和可变集合提供各自的接口&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-java-has-that-kotlin-does-not"&gt;Java 有而 Kotlin 没有的特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="../../../languageguide/5.6-Exceptions/"&gt;受检异常&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;不是类的&lt;a href="../../../languageguide/5.4-Types/5.4.1-TypesOverview/"&gt;基本类型&lt;/a&gt;。字节码会尽可能使用基本类型，但它们不能显式使用。&lt;/li&gt;
&lt;li&gt;&lt;a href="../../../languageguide/5.8-Classesandinterfaces/5.8.1-Classes/"&gt;静态成员&lt;/a&gt;被替换为&lt;a href="../../../languageguide/5.8-Classesandinterfaces/5.8.7-ObjectDeclarations/#companion-objects"&gt;伴生对象&lt;/a&gt;、&lt;a href="../../../languageguide/5.7-Functions/5.7.1-Functions/"&gt;顶层函数&lt;/a&gt;、&lt;a href="../../../languageguide/5.8-Classesandinterfaces/5.8.3-Extensions/#extension-functions"&gt;扩展函数&lt;/a&gt;或 &lt;a href="../7.1.3-JavaToKotlinInterop/#static-methods"&gt;@JvmStatic&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;a href="../../../languageguide/5.11-Generics/"&gt;通配符类型&lt;/a&gt;被替换为&lt;a href="../../../languageguide/5.11-Generics/#declaration-site-variance"&gt;声明处型变&lt;/a&gt;和&lt;a href="../../../languageguide/5.11-Generics/#type-projections"&gt;类型投影&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;a href="../../../languageguide/5.5-Controlflow/5.5.1-ControlFlow/#if-expression"&gt;三元运算符 &lt;code&gt;a ? b : c&lt;/code&gt;&lt;/a&gt;被替换为 &lt;a href="../../../languageguide/5.5-Controlflow/5.5.1-ControlFlow/#if-expression"&gt;if 表达式&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openjdk.org/jeps/395"&gt;记录类型（Records）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;包级私有的&lt;a href="../../../languageguide/5.1-Basicsyntax/5.1.5-VisibilityModifiers/"&gt;可见性修饰符&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt; Kotlin 没有模式匹配，但 &lt;a href="../../../languageguide/5.4-Types/5.4.8-Typecasts/#smart-casts"&gt;Kotlin 中的智能转换&lt;/a&gt;提供了与 &lt;a href="https://openjdk.org/projects/amber/design-notes/patterns/pattern-matching-for-java"&gt;Java 中的模式匹配&lt;/a&gt;类似的功能。可以在&lt;a href="https://www.youtube.com/watch?v=yJDoa42X-wQ"&gt;官方的 Kotlin by JetBrains 频道视频&lt;/a&gt;中了解更多。&lt;/p&gt;</description></item><item><title>7.1.2 从 Kotlin 调用 Java</title><link>https://before80.github.io/prgms/Kotlin/interoperability/7.1-Javainterop/7.1.2-JavaInterop/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/interoperability/7.1-Javainterop/7.1.2-JavaInterop/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/java-interop.html"&gt;https://kotlinlang.org/docs/java-interop.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="712-从-kotlin-调用-java"&gt;7.1.2 从 Kotlin 调用 Java&lt;/h1&gt;
&lt;p&gt;Kotlin 在设计时就考虑了 Java 互操作。现有的 Java 代码可以从 Kotlin 以自然的方式调用，Kotlin 代码也可以相当顺畅地从 Java 中使用。本节介绍从 Kotlin 调用 Java 代码的一些细节。&lt;/p&gt;</description></item><item><title>7.1.3 从 Java 调用 Kotlin</title><link>https://before80.github.io/prgms/Kotlin/interoperability/7.1-Javainterop/7.1.3-JavaToKotlinInterop/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/interoperability/7.1-Javainterop/7.1.3-JavaToKotlinInterop/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/java-to-kotlin-interop.html"&gt;https://kotlinlang.org/docs/java-to-kotlin-interop.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="713-从-java-调用-kotlin"&gt;7.1.3 从 Java 调用 Kotlin&lt;/h1&gt;
&lt;p&gt;Kotlin 代码可以很容易地从 Java 调用。例如，Kotlin 类的实例可以在 Java 方法中无缝地创建和操作。不过，Java 与 Kotlin 之间存在一些差异，在把 Kotlin 代码集成到 Java 中时需要留意。本页将介绍如何为你的 Kotlin 代码与其 Java 客户端之间的互操作做定制。&lt;/p&gt;</description></item><item><title>7.1.4 在 Kotlin 中使用 Java 记录类型</title><link>https://before80.github.io/prgms/Kotlin/interoperability/7.1-Javainterop/7.1.4-JvmRecords/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/interoperability/7.1-Javainterop/7.1.4-JvmRecords/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/jvm-records.html"&gt;https://kotlinlang.org/docs/jvm-records.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="714-在-kotlin-中使用-java-记录类型"&gt;7.1.4 在 Kotlin 中使用 Java 记录类型&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;记录类型&lt;/em&gt;（Records）是 Java 中用于存储不可变数据的&lt;a href="https://openjdk.java.net/jeps/395"&gt;类&lt;/a&gt;。记录类型携带一组固定的值——即&lt;em&gt;记录组件&lt;/em&gt;。它们在 Java 中有简洁的语法，省去了编写样板代码的麻烦：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8a93a5;font-style:italic"&gt;// Java&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;public&lt;/span&gt; &lt;span style="color:#76a9f9"&gt;record&lt;/span&gt; &lt;span style="color:#ca72ff"&gt;Person&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;(&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;String&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;name&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;,&lt;/span&gt; &lt;span style="color:#e5c07b"&gt;int&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;age&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;)&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;编译器会自动生成一个继承自 &lt;a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Record.html"&gt;&lt;code&gt;java.lang.Record&lt;/code&gt;&lt;/a&gt; 的 final 类，其中包含以下成员：&lt;/p&gt;</description></item></channel></rss>