ASP.NET Core 迁移至 Spring系列:语言基础篇

C# 是一门优秀的语言,但在国内企业级开发中已逐步面临淘汰趋势。加上 AI 原生工具的加持,语言本身将不再是迁移的主要障碍。因此,本系列旨在帮助只有 C# 经验的开发者快速迁移到 Spring 全家桶。

版本基线

类别 版本
C# 12(.NET 8)
Java 17(LTS)
Spring Boot 3.2.x
ASP.NET Core 8.0
NuGet 6.x
Maven 3.9.x

前言

上个月帮一个朋友做 ASP.NET Core → Spring Boot 3 迁移。在许多以 Web API、依赖注入、ORM 和构建配置为主的迁移任务中,API 名称、类库和编译链对照通常占据大量工作量;但数据库语义、并发模型、部署、可观测性和安全策略仍需要单独设计。

这篇文档把 29 个高频对照点 系统整理(语言基础 5 + 类库 10 + 编译链/生态 14),每条对照都包含:数据结构 + 核心类库 + 代码示例 + 编译链命令

读完这篇,你能在 ASP.NET Core → Spring Boot 迁移的 API / 类库 / 编译链对照部分具备落地能力,但数据库迁移、可观测性、安全等专项仍需参考各专题文档。


一、语言基础对照

1.1 关键字对照

类别 C# Java
类定义 class / struct / record class / record(Java 14+)
接口 interface interface
继承 : extends / implements
访问修饰 public / private / protected / internal public / private / protected / (package-private)
常量 const / readonly final
静态 static static
异步 async / await CompletableFuture(Java 8+)
空安全 Nullable<T>?(值类型可空) string?(可空引用类型,编译器分析) Optional<T>(Java 8+,仅推荐用于返回值)
1.1.1 Nullable 三种语义区分
场景 C# 写法 Java 写法 说明
值类型可空 int? age = null; Optional<Integer> age = Optional.empty(); C# 通过 Nullable<T> 装箱实现;Java 用 Optional<Integer> 包装
可空引用类型 string? name = null; 无对应(Java 无编译期空安全) C# 在 <Nullable>enable</Nullable> 上下文由编译器静态分析,不是运行时检查
返回值包装 User? GetById(int id) Optional<User> findById(Long id) Java Spring Data JPA 的 findById 即返回 Optional

重要差异 *:C# 的 string?编译期语法糖 (仅在 Nullable 上下文生效),运行时仍是普通 string;Java 的 Optional运行时对象 ,有内存开销,不应作为字段类型(Effective Java Item 55)。

1.2 数据类型对照

C# Java 备注
int int 32 位有符号整数
long long 64 位有符号整数
float float 32 位 IEEE 754
double double 64 位 IEEE 754
bool boolean 语义对应,但 JVM 不保证对象内存布局为 1 字节
char char C# 16 位 Unicode;Java 16 位 UTF-16 code unit
byte byte 8 位有符号
short short 16 位有符号
string String 不可变引用类型
decimal BigDecimal 高精度数值,见 M-02 注意事项
1.2.1 BigDecimal 使用注意事项
java 复制代码
import java.math.BigDecimal;
import java.math.RoundingMode;

// 正确:用 String 构造(避免 double 二进制精度丢失)
BigDecimal price = new BigDecimal("19.99");

// 错误:用 double 构造,0.1 在二进制中无法精确表示
// BigDecimal wrong = new BigDecimal(0.1);  // 结果是 0.10000000000000000555...

// 乘法 + 精度控制
BigDecimal total = price.multiply(new BigDecimal(3));
total = total.setScale(2, RoundingMode.HALF_UP);  // 银行家舍入 / 四舍五入

// 比较必须用 compareTo,不能用 == 或 equals
// equals 比较 scale(1.0 != 1.00),compareTo 只比较数值
BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("1.00");
System.out.println(a.equals(b));       // false(scale 不同)
System.out.println(a.compareTo(b) == 0); // true(数值相等)

关键陷阱

  1. new BigDecimal(double) 会引入精度噪声,金融场景必须用 String 构造
  2. equals 区分 scale,业务比较永远用 compareTo
  3. divide 可能抛 ArithmeticException(无限循环小数),必须显式指定 RoundingModeMathContext

1.3 流程控制对照

类别 C# Java
控制台输出 Console.WriteLine("hello") System.out.println("hello")
主方法 static void Main(string[] args) public static void main(String[] args)
foreach foreach (var x in list) for (T x : list)
三元 condition ? a : b condition ? a : b
字符串插值 $"Hello {name}" String message = "Hello " + name; // 或者:String message = String.format("Hello %s", name);Java 17 字符串处理
1.3.1 控制台输出完整对照
csharp 复制代码
// C# Console
using System;

class Program {
    static void Main(string[] args) {
        Console.WriteLine("hello");              // 不换行:Console.Write("hello");
        Console.WriteLine($"Name: {args[0]}");   // 插值
        Console.Error.WriteLine("oops");         // 错误流
    }
}
java 复制代码
// Java System.out
public class Program {
    public static void main(String[] args) {
        System.out.println("hello");                          // 不换行:System.out.print("hello");
        System.out.println("Name: " + args[0]);               // 字符串拼接
        System.out.printf("Name: %s%n", args[0]);            // 格式化
        System.err.println("oops");                           // 错误流
    }
}

#mermaid-svg-Nzzzy8tLgOwq7Hq4{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .error-icon{fill:#552222;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .marker.cross{stroke:#333333;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 p{margin:0;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .cluster-label text{fill:#333;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .cluster-label span{color:#333;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .cluster-label span p{background-color:transparent;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .label text,#mermaid-svg-Nzzzy8tLgOwq7Hq4 span{fill:#333;color:#333;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .node rect,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .node circle,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .node ellipse,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .node polygon,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .rough-node .label text,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .node .label text,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .image-shape .label,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .rough-node .label,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .node .label,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .image-shape .label,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .icon-shape .label{text-align:center;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .node.clickable{cursor:pointer;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .arrowheadPath{fill:#333333;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .cluster text{fill:#333;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .cluster span{color:#333;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .icon-shape,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .icon-shape p,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .icon-shape .label rect,#mermaid-svg-Nzzzy8tLgOwq7Hq4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Nzzzy8tLgOwq7Hq4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 输出 API
C# Console
Java System
WriteLine/Write
Error
string interpolation
print/println
err
printf

1.3.2 if / for / while / switch 完整对照
csharp 复制代码
// C# 流程控制
int score = 85;

// if / else if / else
if (score >= 90) {
    Console.WriteLine("A");
} else if (score >= 60) {
    Console.WriteLine("Pass");
} else {
    Console.WriteLine("Fail");
}

// for
for (int i = 0; i < 3; i++) {
    Console.WriteLine(i);
}

// while / do-while
int n = 0;
while (n < 3) { n++; }
do { n--; } while (n > 0);

// switch(C# 8+ 支持表达式)
switch (score / 10) {
    case 10:
    case 9:  Console.WriteLine("A"); break;
    case 8:  Console.WriteLine("B"); break;
    default: Console.WriteLine("Other"); break;
}
java 复制代码
// Java 17 流程控制
int score = 85;

// if / else if / else(语法一致)
if (score >= 90) {
    System.out.println("A");
} else if (score >= 60) {
    System.out.println("Pass");
} else {
    System.out.println("Fail");
}

// for
for (int i = 0; i < 3; i++) {
    System.out.println(i);
}

// while / do-while
int n = 0;
while (n < 3) { n++; }
do { n--; } while (n > 0);

// switch(Java 14+ 箭头语法,无需 break)
switch (score / 10) {
    case 10, 9 -> System.out.println("A");
    case 8     -> System.out.println("B");
    default    -> System.out.println("Other");
}

#mermaid-svg-rrVm3IgdvTSzWVk7{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-rrVm3IgdvTSzWVk7 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-rrVm3IgdvTSzWVk7 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-rrVm3IgdvTSzWVk7 .error-icon{fill:#552222;}#mermaid-svg-rrVm3IgdvTSzWVk7 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-rrVm3IgdvTSzWVk7 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-rrVm3IgdvTSzWVk7 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-rrVm3IgdvTSzWVk7 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-rrVm3IgdvTSzWVk7 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-rrVm3IgdvTSzWVk7 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-rrVm3IgdvTSzWVk7 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-rrVm3IgdvTSzWVk7 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-rrVm3IgdvTSzWVk7 .marker.cross{stroke:#333333;}#mermaid-svg-rrVm3IgdvTSzWVk7 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-rrVm3IgdvTSzWVk7 p{margin:0;}#mermaid-svg-rrVm3IgdvTSzWVk7 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-rrVm3IgdvTSzWVk7 .cluster-label text{fill:#333;}#mermaid-svg-rrVm3IgdvTSzWVk7 .cluster-label span{color:#333;}#mermaid-svg-rrVm3IgdvTSzWVk7 .cluster-label span p{background-color:transparent;}#mermaid-svg-rrVm3IgdvTSzWVk7 .label text,#mermaid-svg-rrVm3IgdvTSzWVk7 span{fill:#333;color:#333;}#mermaid-svg-rrVm3IgdvTSzWVk7 .node rect,#mermaid-svg-rrVm3IgdvTSzWVk7 .node circle,#mermaid-svg-rrVm3IgdvTSzWVk7 .node ellipse,#mermaid-svg-rrVm3IgdvTSzWVk7 .node polygon,#mermaid-svg-rrVm3IgdvTSzWVk7 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-rrVm3IgdvTSzWVk7 .rough-node .label text,#mermaid-svg-rrVm3IgdvTSzWVk7 .node .label text,#mermaid-svg-rrVm3IgdvTSzWVk7 .image-shape .label,#mermaid-svg-rrVm3IgdvTSzWVk7 .icon-shape .label{text-anchor:middle;}#mermaid-svg-rrVm3IgdvTSzWVk7 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-rrVm3IgdvTSzWVk7 .rough-node .label,#mermaid-svg-rrVm3IgdvTSzWVk7 .node .label,#mermaid-svg-rrVm3IgdvTSzWVk7 .image-shape .label,#mermaid-svg-rrVm3IgdvTSzWVk7 .icon-shape .label{text-align:center;}#mermaid-svg-rrVm3IgdvTSzWVk7 .node.clickable{cursor:pointer;}#mermaid-svg-rrVm3IgdvTSzWVk7 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-rrVm3IgdvTSzWVk7 .arrowheadPath{fill:#333333;}#mermaid-svg-rrVm3IgdvTSzWVk7 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-rrVm3IgdvTSzWVk7 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-rrVm3IgdvTSzWVk7 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-rrVm3IgdvTSzWVk7 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-rrVm3IgdvTSzWVk7 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-rrVm3IgdvTSzWVk7 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-rrVm3IgdvTSzWVk7 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-rrVm3IgdvTSzWVk7 .cluster text{fill:#333;}#mermaid-svg-rrVm3IgdvTSzWVk7 .cluster span{color:#333;}#mermaid-svg-rrVm3IgdvTSzWVk7 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-rrVm3IgdvTSzWVk7 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-rrVm3IgdvTSzWVk7 rect.text{fill:none;stroke-width:0;}#mermaid-svg-rrVm3IgdvTSzWVk7 .icon-shape,#mermaid-svg-rrVm3IgdvTSzWVk7 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-rrVm3IgdvTSzWVk7 .icon-shape p,#mermaid-svg-rrVm3IgdvTSzWVk7 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-rrVm3IgdvTSzWVk7 .icon-shape .label rect,#mermaid-svg-rrVm3IgdvTSzWVk7 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-rrVm3IgdvTSzWVk7 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-rrVm3IgdvTSzWVk7 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-rrVm3IgdvTSzWVk7 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 对应
流程控制
条件分支
循环
多路分支
if / else if / else
Java if 语法相同
for 计数器
while / do-while
foreach / for-each
C# switch 表达式
Java switch 箭头语法 14+

1.4 数据结构图

#mermaid-svg-NbWJn4OA5Sw8L4om{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-NbWJn4OA5Sw8L4om .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-NbWJn4OA5Sw8L4om .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-NbWJn4OA5Sw8L4om .error-icon{fill:#552222;}#mermaid-svg-NbWJn4OA5Sw8L4om .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-NbWJn4OA5Sw8L4om .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-NbWJn4OA5Sw8L4om .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-NbWJn4OA5Sw8L4om .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-NbWJn4OA5Sw8L4om .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-NbWJn4OA5Sw8L4om .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-NbWJn4OA5Sw8L4om .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-NbWJn4OA5Sw8L4om .marker{fill:#333333;stroke:#333333;}#mermaid-svg-NbWJn4OA5Sw8L4om .marker.cross{stroke:#333333;}#mermaid-svg-NbWJn4OA5Sw8L4om svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-NbWJn4OA5Sw8L4om p{margin:0;}#mermaid-svg-NbWJn4OA5Sw8L4om .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-NbWJn4OA5Sw8L4om .cluster-label text{fill:#333;}#mermaid-svg-NbWJn4OA5Sw8L4om .cluster-label span{color:#333;}#mermaid-svg-NbWJn4OA5Sw8L4om .cluster-label span p{background-color:transparent;}#mermaid-svg-NbWJn4OA5Sw8L4om .label text,#mermaid-svg-NbWJn4OA5Sw8L4om span{fill:#333;color:#333;}#mermaid-svg-NbWJn4OA5Sw8L4om .node rect,#mermaid-svg-NbWJn4OA5Sw8L4om .node circle,#mermaid-svg-NbWJn4OA5Sw8L4om .node ellipse,#mermaid-svg-NbWJn4OA5Sw8L4om .node polygon,#mermaid-svg-NbWJn4OA5Sw8L4om .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-NbWJn4OA5Sw8L4om .rough-node .label text,#mermaid-svg-NbWJn4OA5Sw8L4om .node .label text,#mermaid-svg-NbWJn4OA5Sw8L4om .image-shape .label,#mermaid-svg-NbWJn4OA5Sw8L4om .icon-shape .label{text-anchor:middle;}#mermaid-svg-NbWJn4OA5Sw8L4om .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-NbWJn4OA5Sw8L4om .rough-node .label,#mermaid-svg-NbWJn4OA5Sw8L4om .node .label,#mermaid-svg-NbWJn4OA5Sw8L4om .image-shape .label,#mermaid-svg-NbWJn4OA5Sw8L4om .icon-shape .label{text-align:center;}#mermaid-svg-NbWJn4OA5Sw8L4om .node.clickable{cursor:pointer;}#mermaid-svg-NbWJn4OA5Sw8L4om .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-NbWJn4OA5Sw8L4om .arrowheadPath{fill:#333333;}#mermaid-svg-NbWJn4OA5Sw8L4om .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-NbWJn4OA5Sw8L4om .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-NbWJn4OA5Sw8L4om .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-NbWJn4OA5Sw8L4om .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-NbWJn4OA5Sw8L4om .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-NbWJn4OA5Sw8L4om .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-NbWJn4OA5Sw8L4om .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-NbWJn4OA5Sw8L4om .cluster text{fill:#333;}#mermaid-svg-NbWJn4OA5Sw8L4om .cluster span{color:#333;}#mermaid-svg-NbWJn4OA5Sw8L4om div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-NbWJn4OA5Sw8L4om .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-NbWJn4OA5Sw8L4om rect.text{fill:none;stroke-width:0;}#mermaid-svg-NbWJn4OA5Sw8L4om .icon-shape,#mermaid-svg-NbWJn4OA5Sw8L4om .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-NbWJn4OA5Sw8L4om .icon-shape p,#mermaid-svg-NbWJn4OA5Sw8L4om .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-NbWJn4OA5Sw8L4om .icon-shape .label rect,#mermaid-svg-NbWJn4OA5Sw8L4om .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-NbWJn4OA5Sw8L4om .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-NbWJn4OA5Sw8L4om .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-NbWJn4OA5Sw8L4om :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 对应
对应
对应
对应
Java 类型系统
基本类型
引用类型
数值

byte/short/int/long/float/double
字符 char
布尔 boolean
类 class
接口 interface
数组
枚举 enum
C# 值类型
C# class
C# interface
C# enum

1.5 处理流程

.java 源文件 JVM 字节码 编译链 .java 源文件 JVM 字节码 编译链 #mermaid-svg-oQLdfvHheQQ5ESNX{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-oQLdfvHheQQ5ESNX .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-oQLdfvHheQQ5ESNX .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-oQLdfvHheQQ5ESNX .error-icon{fill:#552222;}#mermaid-svg-oQLdfvHheQQ5ESNX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-oQLdfvHheQQ5ESNX .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-oQLdfvHheQQ5ESNX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-oQLdfvHheQQ5ESNX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-oQLdfvHheQQ5ESNX .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-oQLdfvHheQQ5ESNX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-oQLdfvHheQQ5ESNX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-oQLdfvHheQQ5ESNX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-oQLdfvHheQQ5ESNX .marker.cross{stroke:#333333;}#mermaid-svg-oQLdfvHheQQ5ESNX svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-oQLdfvHheQQ5ESNX p{margin:0;}#mermaid-svg-oQLdfvHheQQ5ESNX .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-oQLdfvHheQQ5ESNX text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-oQLdfvHheQQ5ESNX .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-oQLdfvHheQQ5ESNX .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-oQLdfvHheQQ5ESNX .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-oQLdfvHheQQ5ESNX .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-oQLdfvHheQQ5ESNX #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-oQLdfvHheQQ5ESNX .sequenceNumber{fill:white;}#mermaid-svg-oQLdfvHheQQ5ESNX #sequencenumber{fill:#333;}#mermaid-svg-oQLdfvHheQQ5ESNX #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-oQLdfvHheQQ5ESNX .messageText{fill:#333;stroke:none;}#mermaid-svg-oQLdfvHheQQ5ESNX .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-oQLdfvHheQQ5ESNX .labelText,#mermaid-svg-oQLdfvHheQQ5ESNX .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-oQLdfvHheQQ5ESNX .loopText,#mermaid-svg-oQLdfvHheQQ5ESNX .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-oQLdfvHheQQ5ESNX .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-oQLdfvHheQQ5ESNX .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-oQLdfvHheQQ5ESNX .noteText,#mermaid-svg-oQLdfvHheQQ5ESNX .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-oQLdfvHheQQ5ESNX .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-oQLdfvHheQQ5ESNX .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-oQLdfvHheQQ5ESNX .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-oQLdfvHheQQ5ESNX .actorPopupMenu{position:absolute;}#mermaid-svg-oQLdfvHheQQ5ESNX .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-oQLdfvHheQQ5ESNX .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-oQLdfvHheQQ5ESNX .actor-man circle,#mermaid-svg-oQLdfvHheQQ5ESNX line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-oQLdfvHheQQ5ESNX :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} javac 编译生成 .class类加载字节码验证JIT 编译执行


二、类与对象对照

2.1 数据结构

#mermaid-svg-HLWFhvSex9Cs7TOn{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-HLWFhvSex9Cs7TOn .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-HLWFhvSex9Cs7TOn .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-HLWFhvSex9Cs7TOn .error-icon{fill:#552222;}#mermaid-svg-HLWFhvSex9Cs7TOn .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-HLWFhvSex9Cs7TOn .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-HLWFhvSex9Cs7TOn .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-HLWFhvSex9Cs7TOn .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-HLWFhvSex9Cs7TOn .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-HLWFhvSex9Cs7TOn .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-HLWFhvSex9Cs7TOn .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-HLWFhvSex9Cs7TOn .marker{fill:#333333;stroke:#333333;}#mermaid-svg-HLWFhvSex9Cs7TOn .marker.cross{stroke:#333333;}#mermaid-svg-HLWFhvSex9Cs7TOn svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-HLWFhvSex9Cs7TOn p{margin:0;}#mermaid-svg-HLWFhvSex9Cs7TOn g.classGroup text{fill:#9370DB;stroke:none;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-HLWFhvSex9Cs7TOn g.classGroup text .title{font-weight:bolder;}#mermaid-svg-HLWFhvSex9Cs7TOn .cluster-label text{fill:#333;}#mermaid-svg-HLWFhvSex9Cs7TOn .cluster-label span{color:#333;}#mermaid-svg-HLWFhvSex9Cs7TOn .cluster-label span p{background-color:transparent;}#mermaid-svg-HLWFhvSex9Cs7TOn .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-HLWFhvSex9Cs7TOn .cluster text{fill:#333;}#mermaid-svg-HLWFhvSex9Cs7TOn .cluster span{color:#333;}#mermaid-svg-HLWFhvSex9Cs7TOn .nodeLabel,#mermaid-svg-HLWFhvSex9Cs7TOn .edgeLabel{color:#131300;}#mermaid-svg-HLWFhvSex9Cs7TOn .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-HLWFhvSex9Cs7TOn .label text{fill:#131300;}#mermaid-svg-HLWFhvSex9Cs7TOn .labelBkg{background:#ECECFF;}#mermaid-svg-HLWFhvSex9Cs7TOn .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-HLWFhvSex9Cs7TOn .classTitle{font-weight:bolder;}#mermaid-svg-HLWFhvSex9Cs7TOn .node rect,#mermaid-svg-HLWFhvSex9Cs7TOn .node circle,#mermaid-svg-HLWFhvSex9Cs7TOn .node ellipse,#mermaid-svg-HLWFhvSex9Cs7TOn .node polygon,#mermaid-svg-HLWFhvSex9Cs7TOn .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-HLWFhvSex9Cs7TOn .divider{stroke:#9370DB;stroke-width:1;}#mermaid-svg-HLWFhvSex9Cs7TOn g.clickable{cursor:pointer;}#mermaid-svg-HLWFhvSex9Cs7TOn g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-HLWFhvSex9Cs7TOn g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-HLWFhvSex9Cs7TOn .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-HLWFhvSex9Cs7TOn .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-HLWFhvSex9Cs7TOn .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-HLWFhvSex9Cs7TOn .dashed-line{stroke-dasharray:3;}#mermaid-svg-HLWFhvSex9Cs7TOn .dotted-line{stroke-dasharray:1 2;}#mermaid-svg-HLWFhvSex9Cs7TOn #compositionStart,#mermaid-svg-HLWFhvSex9Cs7TOn .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-HLWFhvSex9Cs7TOn #compositionEnd,#mermaid-svg-HLWFhvSex9Cs7TOn .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-HLWFhvSex9Cs7TOn #dependencyStart,#mermaid-svg-HLWFhvSex9Cs7TOn .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-HLWFhvSex9Cs7TOn #dependencyStart,#mermaid-svg-HLWFhvSex9Cs7TOn .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-HLWFhvSex9Cs7TOn #extensionStart,#mermaid-svg-HLWFhvSex9Cs7TOn .extension{fill:transparent!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-HLWFhvSex9Cs7TOn #extensionEnd,#mermaid-svg-HLWFhvSex9Cs7TOn .extension{fill:transparent!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-HLWFhvSex9Cs7TOn #aggregationStart,#mermaid-svg-HLWFhvSex9Cs7TOn .aggregation{fill:transparent!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-HLWFhvSex9Cs7TOn #aggregationEnd,#mermaid-svg-HLWFhvSex9Cs7TOn .aggregation{fill:transparent!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-HLWFhvSex9Cs7TOn #lollipopStart,#mermaid-svg-HLWFhvSex9Cs7TOn .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-HLWFhvSex9Cs7TOn #lollipopEnd,#mermaid-svg-HLWFhvSex9Cs7TOn .lollipop{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-HLWFhvSex9Cs7TOn .edgeTerminals{font-size:11px;line-height:initial;}#mermaid-svg-HLWFhvSex9Cs7TOn .classTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-HLWFhvSex9Cs7TOn .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-HLWFhvSex9Cs7TOn .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-HLWFhvSex9Cs7TOn :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Animal
+String name
+int age
+void eat()
Dog
+String breed
+void bark()
Cat
+void meow()

2.2 代码示例

csharp 复制代码
// C#
public class Animal
{
    public string Name { get; set; } = string.Empty;  // 必填字段:= string.Empty 或 required
    // C# 11+:public required string Name { get; set; }

    public virtual void Eat()
        => Console.WriteLine($"{Name} eating");
}

public class Dog : Animal
{
    public override void Eat()
        => Console.WriteLine($"{Name} dog eating");
}
java 复制代码
// Java
public class Animal {
    private String name;

    public String getName() {
        return name;
    }

    public void eat() {
        System.out.println(name + " eating");
    }
}

public class Dog extends Animal {
    @Override
    public void eat() {
        System.out.println(getName() + " dog eating");
    }
}

三、集合框架对照

3.1 数据结构

#mermaid-svg-eUBFsp0FWwDTQjXe{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-eUBFsp0FWwDTQjXe .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-eUBFsp0FWwDTQjXe .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-eUBFsp0FWwDTQjXe .error-icon{fill:#552222;}#mermaid-svg-eUBFsp0FWwDTQjXe .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-eUBFsp0FWwDTQjXe .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-eUBFsp0FWwDTQjXe .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-eUBFsp0FWwDTQjXe .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-eUBFsp0FWwDTQjXe .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-eUBFsp0FWwDTQjXe .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-eUBFsp0FWwDTQjXe .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-eUBFsp0FWwDTQjXe .marker{fill:#333333;stroke:#333333;}#mermaid-svg-eUBFsp0FWwDTQjXe .marker.cross{stroke:#333333;}#mermaid-svg-eUBFsp0FWwDTQjXe svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-eUBFsp0FWwDTQjXe p{margin:0;}#mermaid-svg-eUBFsp0FWwDTQjXe .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-eUBFsp0FWwDTQjXe .cluster-label text{fill:#333;}#mermaid-svg-eUBFsp0FWwDTQjXe .cluster-label span{color:#333;}#mermaid-svg-eUBFsp0FWwDTQjXe .cluster-label span p{background-color:transparent;}#mermaid-svg-eUBFsp0FWwDTQjXe .label text,#mermaid-svg-eUBFsp0FWwDTQjXe span{fill:#333;color:#333;}#mermaid-svg-eUBFsp0FWwDTQjXe .node rect,#mermaid-svg-eUBFsp0FWwDTQjXe .node circle,#mermaid-svg-eUBFsp0FWwDTQjXe .node ellipse,#mermaid-svg-eUBFsp0FWwDTQjXe .node polygon,#mermaid-svg-eUBFsp0FWwDTQjXe .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-eUBFsp0FWwDTQjXe .rough-node .label text,#mermaid-svg-eUBFsp0FWwDTQjXe .node .label text,#mermaid-svg-eUBFsp0FWwDTQjXe .image-shape .label,#mermaid-svg-eUBFsp0FWwDTQjXe .icon-shape .label{text-anchor:middle;}#mermaid-svg-eUBFsp0FWwDTQjXe .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-eUBFsp0FWwDTQjXe .rough-node .label,#mermaid-svg-eUBFsp0FWwDTQjXe .node .label,#mermaid-svg-eUBFsp0FWwDTQjXe .image-shape .label,#mermaid-svg-eUBFsp0FWwDTQjXe .icon-shape .label{text-align:center;}#mermaid-svg-eUBFsp0FWwDTQjXe .node.clickable{cursor:pointer;}#mermaid-svg-eUBFsp0FWwDTQjXe .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-eUBFsp0FWwDTQjXe .arrowheadPath{fill:#333333;}#mermaid-svg-eUBFsp0FWwDTQjXe .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-eUBFsp0FWwDTQjXe .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-eUBFsp0FWwDTQjXe .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-eUBFsp0FWwDTQjXe .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-eUBFsp0FWwDTQjXe .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-eUBFsp0FWwDTQjXe .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-eUBFsp0FWwDTQjXe .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-eUBFsp0FWwDTQjXe .cluster text{fill:#333;}#mermaid-svg-eUBFsp0FWwDTQjXe .cluster span{color:#333;}#mermaid-svg-eUBFsp0FWwDTQjXe div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-eUBFsp0FWwDTQjXe .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-eUBFsp0FWwDTQjXe rect.text{fill:none;stroke-width:0;}#mermaid-svg-eUBFsp0FWwDTQjXe .icon-shape,#mermaid-svg-eUBFsp0FWwDTQjXe .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-eUBFsp0FWwDTQjXe .icon-shape p,#mermaid-svg-eUBFsp0FWwDTQjXe .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-eUBFsp0FWwDTQjXe .icon-shape .label rect,#mermaid-svg-eUBFsp0FWwDTQjXe .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-eUBFsp0FWwDTQjXe .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-eUBFsp0FWwDTQjXe .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-eUBFsp0FWwDTQjXe :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Java Collection Framework
List
Set
Map
Queue
ArrayList

动态数组 O(1) 随机访问
LinkedList

头尾操作通常为 O(1)

按索引访问为 O(n)
Vector

线程安全 慢
HashSet

O(1) 哈希查找
TreeSet

O(log n) 红黑树
HashMap

O(1) 哈希桶
TreeMap

O(log n) 红黑树
ConcurrentHashMap

Java 8+ 采用 CAS + synchronized

细粒度桶锁,非简单分段锁

3.2 代码对照

C# Java 备注
List<T> List<T> 接口
new List<int>() new ArrayList<Integer>() 实现类
Dictionary<K,V> Map<K,V> / HashMap<K,V>
HashSet<T> Set<T> / HashSet<T>
Queue<T> Queue<T> / LinkedList<T>
Stack<T> Deque<T> / ArrayDeque<T>
IEnumerable<T> Iterable<T> / Stream<T> LINQ → Stream API

3.3 LINQ vs Stream API

csharp 复制代码
// C# LINQ
var result = list
    .Where(x => x.Age > 18)
    .Select(x => x.Name)
    .OrderBy(x => x)
    .ToList();
java 复制代码
// Java Stream API
// 方式 1:Java 8+ Collectors.toList() ------ 返回 mutable ArrayList
List<String> result = list.stream()
    .filter(x -> x.getAge() > 18)
    .map(x -> x.getName())
    .sorted()
    .collect(Collectors.toList());

// 方式 2:Java 16+ Stream.toList() ------ 返回 immutable List
List<String> result2 = list.stream()
    .filter(x -> x.getAge() > 18)
    .map(x -> x.getName())
    .sorted()
    .toList();  // immutable,调用 add() 抛 UnsupportedOperationException

版本差异Collectors.toList() 返回可变 ArrayList(可 add/remove);Stream.toList()(Java 16+)返回 JDK 内部不可变 List,任何写入操作抛 UnsupportedOperationException 。若需后续修改集合,必须用 Collectors.toCollection(ArrayList::new)

3.4 算法对比

操作 C# LINQ Java Stream 时间复杂度
过滤 Where filter O(n)
映射 Select map O(n)
排序 OrderBy sorted O(n log n)
聚合 Sum / Average mapToInt + sum O(n)
分组 GroupBy Collectors.groupingBy O(n)

3.5 LINQ vs Stream API 数据流图

#mermaid-svg-SSDs6qyjR4ztYypz{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-SSDs6qyjR4ztYypz .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-SSDs6qyjR4ztYypz .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-SSDs6qyjR4ztYypz .error-icon{fill:#552222;}#mermaid-svg-SSDs6qyjR4ztYypz .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-SSDs6qyjR4ztYypz .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-SSDs6qyjR4ztYypz .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-SSDs6qyjR4ztYypz .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-SSDs6qyjR4ztYypz .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-SSDs6qyjR4ztYypz .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-SSDs6qyjR4ztYypz .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-SSDs6qyjR4ztYypz .marker{fill:#333333;stroke:#333333;}#mermaid-svg-SSDs6qyjR4ztYypz .marker.cross{stroke:#333333;}#mermaid-svg-SSDs6qyjR4ztYypz svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-SSDs6qyjR4ztYypz p{margin:0;}#mermaid-svg-SSDs6qyjR4ztYypz .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-SSDs6qyjR4ztYypz .cluster-label text{fill:#333;}#mermaid-svg-SSDs6qyjR4ztYypz .cluster-label span{color:#333;}#mermaid-svg-SSDs6qyjR4ztYypz .cluster-label span p{background-color:transparent;}#mermaid-svg-SSDs6qyjR4ztYypz .label text,#mermaid-svg-SSDs6qyjR4ztYypz span{fill:#333;color:#333;}#mermaid-svg-SSDs6qyjR4ztYypz .node rect,#mermaid-svg-SSDs6qyjR4ztYypz .node circle,#mermaid-svg-SSDs6qyjR4ztYypz .node ellipse,#mermaid-svg-SSDs6qyjR4ztYypz .node polygon,#mermaid-svg-SSDs6qyjR4ztYypz .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-SSDs6qyjR4ztYypz .rough-node .label text,#mermaid-svg-SSDs6qyjR4ztYypz .node .label text,#mermaid-svg-SSDs6qyjR4ztYypz .image-shape .label,#mermaid-svg-SSDs6qyjR4ztYypz .icon-shape .label{text-anchor:middle;}#mermaid-svg-SSDs6qyjR4ztYypz .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-SSDs6qyjR4ztYypz .rough-node .label,#mermaid-svg-SSDs6qyjR4ztYypz .node .label,#mermaid-svg-SSDs6qyjR4ztYypz .image-shape .label,#mermaid-svg-SSDs6qyjR4ztYypz .icon-shape .label{text-align:center;}#mermaid-svg-SSDs6qyjR4ztYypz .node.clickable{cursor:pointer;}#mermaid-svg-SSDs6qyjR4ztYypz .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-SSDs6qyjR4ztYypz .arrowheadPath{fill:#333333;}#mermaid-svg-SSDs6qyjR4ztYypz .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-SSDs6qyjR4ztYypz .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-SSDs6qyjR4ztYypz .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-SSDs6qyjR4ztYypz .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-SSDs6qyjR4ztYypz .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-SSDs6qyjR4ztYypz .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-SSDs6qyjR4ztYypz .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-SSDs6qyjR4ztYypz .cluster text{fill:#333;}#mermaid-svg-SSDs6qyjR4ztYypz .cluster span{color:#333;}#mermaid-svg-SSDs6qyjR4ztYypz div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-SSDs6qyjR4ztYypz .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-SSDs6qyjR4ztYypz rect.text{fill:none;stroke-width:0;}#mermaid-svg-SSDs6qyjR4ztYypz .icon-shape,#mermaid-svg-SSDs6qyjR4ztYypz .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-SSDs6qyjR4ztYypz .icon-shape p,#mermaid-svg-SSDs6qyjR4ztYypz .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-SSDs6qyjR4ztYypz .icon-shape .label rect,#mermaid-svg-SSDs6qyjR4ztYypz .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-SSDs6qyjR4ztYypz .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-SSDs6qyjR4ztYypz .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-SSDs6qyjR4ztYypz :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 原始集合
filter / Where
map / Select
sorted / OrderBy
collect / ToList


四、异常处理对照

4.1 数据结构

#mermaid-svg-5btAQccSCJSqPEos{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5btAQccSCJSqPEos .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5btAQccSCJSqPEos .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5btAQccSCJSqPEos .error-icon{fill:#552222;}#mermaid-svg-5btAQccSCJSqPEos .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5btAQccSCJSqPEos .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5btAQccSCJSqPEos .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5btAQccSCJSqPEos .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5btAQccSCJSqPEos .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5btAQccSCJSqPEos .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5btAQccSCJSqPEos .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5btAQccSCJSqPEos .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5btAQccSCJSqPEos .marker.cross{stroke:#333333;}#mermaid-svg-5btAQccSCJSqPEos svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5btAQccSCJSqPEos p{margin:0;}#mermaid-svg-5btAQccSCJSqPEos .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5btAQccSCJSqPEos .cluster-label text{fill:#333;}#mermaid-svg-5btAQccSCJSqPEos .cluster-label span{color:#333;}#mermaid-svg-5btAQccSCJSqPEos .cluster-label span p{background-color:transparent;}#mermaid-svg-5btAQccSCJSqPEos .label text,#mermaid-svg-5btAQccSCJSqPEos span{fill:#333;color:#333;}#mermaid-svg-5btAQccSCJSqPEos .node rect,#mermaid-svg-5btAQccSCJSqPEos .node circle,#mermaid-svg-5btAQccSCJSqPEos .node ellipse,#mermaid-svg-5btAQccSCJSqPEos .node polygon,#mermaid-svg-5btAQccSCJSqPEos .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5btAQccSCJSqPEos .rough-node .label text,#mermaid-svg-5btAQccSCJSqPEos .node .label text,#mermaid-svg-5btAQccSCJSqPEos .image-shape .label,#mermaid-svg-5btAQccSCJSqPEos .icon-shape .label{text-anchor:middle;}#mermaid-svg-5btAQccSCJSqPEos .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5btAQccSCJSqPEos .rough-node .label,#mermaid-svg-5btAQccSCJSqPEos .node .label,#mermaid-svg-5btAQccSCJSqPEos .image-shape .label,#mermaid-svg-5btAQccSCJSqPEos .icon-shape .label{text-align:center;}#mermaid-svg-5btAQccSCJSqPEos .node.clickable{cursor:pointer;}#mermaid-svg-5btAQccSCJSqPEos .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5btAQccSCJSqPEos .arrowheadPath{fill:#333333;}#mermaid-svg-5btAQccSCJSqPEos .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5btAQccSCJSqPEos .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5btAQccSCJSqPEos .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5btAQccSCJSqPEos .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5btAQccSCJSqPEos .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5btAQccSCJSqPEos .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5btAQccSCJSqPEos .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5btAQccSCJSqPEos .cluster text{fill:#333;}#mermaid-svg-5btAQccSCJSqPEos .cluster span{color:#333;}#mermaid-svg-5btAQccSCJSqPEos div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5btAQccSCJSqPEos .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5btAQccSCJSqPEos rect.text{fill:none;stroke-width:0;}#mermaid-svg-5btAQccSCJSqPEos .icon-shape,#mermaid-svg-5btAQccSCJSqPEos .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5btAQccSCJSqPEos .icon-shape p,#mermaid-svg-5btAQccSCJSqPEos .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5btAQccSCJSqPEos .icon-shape .label rect,#mermaid-svg-5btAQccSCJSqPEos .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5btAQccSCJSqPEos .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5btAQccSCJSqPEos .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5btAQccSCJSqPEos :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Throwable
Error
Exception
RuntimeException
IOException
其他 Checked Exception
NullPointerException
IndexOutOfBoundsException
IllegalArgumentException
ClassCastException
FileNotFoundException
SocketException

4.2 代码对照

csharp 复制代码
// C#
try {
    var content = File.ReadAllText("file.txt");
} catch (FileNotFoundException e) {
    Console.WriteLine($"File not found: {e.Message}");
} catch (IOException e) {
    Console.WriteLine($"IO error: {e.Message}");
} finally {
    Console.WriteLine("Cleanup");
}
java 复制代码
// Java
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.NoSuchFileException;
import java.io.IOException;

try {
    String content = Files.readString(Path.of("file.txt"));
} catch (NoSuchFileException e) {
    System.out.println("File not found: " + e.getMessage());
} catch (IOException e) {
    System.out.println("IO error: " + e.getMessage());
} finally {
    System.out.println("Cleanup");
}

4.3 处理流程

#mermaid-svg-mzfimLHENWddJtHF{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-mzfimLHENWddJtHF .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-mzfimLHENWddJtHF .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-mzfimLHENWddJtHF .error-icon{fill:#552222;}#mermaid-svg-mzfimLHENWddJtHF .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-mzfimLHENWddJtHF .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-mzfimLHENWddJtHF .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-mzfimLHENWddJtHF .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-mzfimLHENWddJtHF .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-mzfimLHENWddJtHF .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-mzfimLHENWddJtHF .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-mzfimLHENWddJtHF .marker{fill:#333333;stroke:#333333;}#mermaid-svg-mzfimLHENWddJtHF .marker.cross{stroke:#333333;}#mermaid-svg-mzfimLHENWddJtHF svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-mzfimLHENWddJtHF p{margin:0;}#mermaid-svg-mzfimLHENWddJtHF .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-mzfimLHENWddJtHF .cluster-label text{fill:#333;}#mermaid-svg-mzfimLHENWddJtHF .cluster-label span{color:#333;}#mermaid-svg-mzfimLHENWddJtHF .cluster-label span p{background-color:transparent;}#mermaid-svg-mzfimLHENWddJtHF .label text,#mermaid-svg-mzfimLHENWddJtHF span{fill:#333;color:#333;}#mermaid-svg-mzfimLHENWddJtHF .node rect,#mermaid-svg-mzfimLHENWddJtHF .node circle,#mermaid-svg-mzfimLHENWddJtHF .node ellipse,#mermaid-svg-mzfimLHENWddJtHF .node polygon,#mermaid-svg-mzfimLHENWddJtHF .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-mzfimLHENWddJtHF .rough-node .label text,#mermaid-svg-mzfimLHENWddJtHF .node .label text,#mermaid-svg-mzfimLHENWddJtHF .image-shape .label,#mermaid-svg-mzfimLHENWddJtHF .icon-shape .label{text-anchor:middle;}#mermaid-svg-mzfimLHENWddJtHF .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-mzfimLHENWddJtHF .rough-node .label,#mermaid-svg-mzfimLHENWddJtHF .node .label,#mermaid-svg-mzfimLHENWddJtHF .image-shape .label,#mermaid-svg-mzfimLHENWddJtHF .icon-shape .label{text-align:center;}#mermaid-svg-mzfimLHENWddJtHF .node.clickable{cursor:pointer;}#mermaid-svg-mzfimLHENWddJtHF .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-mzfimLHENWddJtHF .arrowheadPath{fill:#333333;}#mermaid-svg-mzfimLHENWddJtHF .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-mzfimLHENWddJtHF .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-mzfimLHENWddJtHF .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-mzfimLHENWddJtHF .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-mzfimLHENWddJtHF .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-mzfimLHENWddJtHF .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-mzfimLHENWddJtHF .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-mzfimLHENWddJtHF .cluster text{fill:#333;}#mermaid-svg-mzfimLHENWddJtHF .cluster span{color:#333;}#mermaid-svg-mzfimLHENWddJtHF div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-mzfimLHENWddJtHF .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-mzfimLHENWddJtHF rect.text{fill:none;stroke-width:0;}#mermaid-svg-mzfimLHENWddJtHF .icon-shape,#mermaid-svg-mzfimLHENWddJtHF .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-mzfimLHENWddJtHF .icon-shape p,#mermaid-svg-mzfimLHENWddJtHF .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-mzfimLHENWddJtHF .icon-shape .label rect,#mermaid-svg-mzfimLHENWddJtHF .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-mzfimLHENWddJtHF .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-mzfimLHENWddJtHF .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-mzfimLHENWddJtHF :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是

try 块
执行代码
异常?
匹配 catch
执行 catch 块
执行 finally
继续后续


五、字符串处理对照

C# Java 备注
string String 不可变
$"Hello {name}" "Hello " + name 字符串插值
string.Format("{0}", x) String.format("%s", x)
string.Join(",", arr) String.join(",", arr)
StringBuilder StringBuilder
string.IsNullOrEmpty(s) `s == null
s.Substring(0, 5) s.substring(0, 5)
s.Split(",") s.split(",")
s.Replace("a", "b") s.replace("a", "b")
s.ToUpper() s.toUpperCase()
s.Trim() s.trim()
s.StartsWith("a") s.startsWith("a")
s.Contains("a") s.contains("a")
regex.IsMatch(s, pattern) s.matches(pattern)

六、泛型对照

6.1 数据结构

#mermaid-svg-Q8W3Tym1i6s03Q8g{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Q8W3Tym1i6s03Q8g .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Q8W3Tym1i6s03Q8g .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Q8W3Tym1i6s03Q8g .error-icon{fill:#552222;}#mermaid-svg-Q8W3Tym1i6s03Q8g .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Q8W3Tym1i6s03Q8g .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Q8W3Tym1i6s03Q8g .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Q8W3Tym1i6s03Q8g .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Q8W3Tym1i6s03Q8g .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Q8W3Tym1i6s03Q8g .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Q8W3Tym1i6s03Q8g .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Q8W3Tym1i6s03Q8g .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Q8W3Tym1i6s03Q8g .marker.cross{stroke:#333333;}#mermaid-svg-Q8W3Tym1i6s03Q8g svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Q8W3Tym1i6s03Q8g p{margin:0;}#mermaid-svg-Q8W3Tym1i6s03Q8g .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Q8W3Tym1i6s03Q8g .cluster-label text{fill:#333;}#mermaid-svg-Q8W3Tym1i6s03Q8g .cluster-label span{color:#333;}#mermaid-svg-Q8W3Tym1i6s03Q8g .cluster-label span p{background-color:transparent;}#mermaid-svg-Q8W3Tym1i6s03Q8g .label text,#mermaid-svg-Q8W3Tym1i6s03Q8g span{fill:#333;color:#333;}#mermaid-svg-Q8W3Tym1i6s03Q8g .node rect,#mermaid-svg-Q8W3Tym1i6s03Q8g .node circle,#mermaid-svg-Q8W3Tym1i6s03Q8g .node ellipse,#mermaid-svg-Q8W3Tym1i6s03Q8g .node polygon,#mermaid-svg-Q8W3Tym1i6s03Q8g .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Q8W3Tym1i6s03Q8g .rough-node .label text,#mermaid-svg-Q8W3Tym1i6s03Q8g .node .label text,#mermaid-svg-Q8W3Tym1i6s03Q8g .image-shape .label,#mermaid-svg-Q8W3Tym1i6s03Q8g .icon-shape .label{text-anchor:middle;}#mermaid-svg-Q8W3Tym1i6s03Q8g .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Q8W3Tym1i6s03Q8g .rough-node .label,#mermaid-svg-Q8W3Tym1i6s03Q8g .node .label,#mermaid-svg-Q8W3Tym1i6s03Q8g .image-shape .label,#mermaid-svg-Q8W3Tym1i6s03Q8g .icon-shape .label{text-align:center;}#mermaid-svg-Q8W3Tym1i6s03Q8g .node.clickable{cursor:pointer;}#mermaid-svg-Q8W3Tym1i6s03Q8g .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Q8W3Tym1i6s03Q8g .arrowheadPath{fill:#333333;}#mermaid-svg-Q8W3Tym1i6s03Q8g .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Q8W3Tym1i6s03Q8g .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Q8W3Tym1i6s03Q8g .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Q8W3Tym1i6s03Q8g .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Q8W3Tym1i6s03Q8g .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Q8W3Tym1i6s03Q8g .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Q8W3Tym1i6s03Q8g .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Q8W3Tym1i6s03Q8g .cluster text{fill:#333;}#mermaid-svg-Q8W3Tym1i6s03Q8g .cluster span{color:#333;}#mermaid-svg-Q8W3Tym1i6s03Q8g div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Q8W3Tym1i6s03Q8g .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Q8W3Tym1i6s03Q8g rect.text{fill:none;stroke-width:0;}#mermaid-svg-Q8W3Tym1i6s03Q8g .icon-shape,#mermaid-svg-Q8W3Tym1i6s03Q8g .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Q8W3Tym1i6s03Q8g .icon-shape p,#mermaid-svg-Q8W3Tym1i6s03Q8g .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Q8W3Tym1i6s03Q8g .icon-shape .label rect,#mermaid-svg-Q8W3Tym1i6s03Q8g .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Q8W3Tym1i6s03Q8g .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Q8W3Tym1i6s03Q8g .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Q8W3Tym1i6s03Q8g :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 泛型 Generic
类型参数
无界

T
上界

T extends Comparable
下界

? super Integer
多参数

K, V
通配符

?

6.2 代码对照

csharp 复制代码
// C#
public class Box<T> where T : IComparable {
    private T value;
    public void Set(T val) => value = val;
    public T Get() => value;
}
java 复制代码
// Java
public class Box<T extends Comparable<T>> {
    private T value;
    public void set(T val) { this.value = val; }
    public T get() { return value; }
}

七、注解对照

7.1 数据结构

#mermaid-svg-ckg0T5M4eigKUgXN{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ckg0T5M4eigKUgXN .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ckg0T5M4eigKUgXN .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ckg0T5M4eigKUgXN .error-icon{fill:#552222;}#mermaid-svg-ckg0T5M4eigKUgXN .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ckg0T5M4eigKUgXN .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ckg0T5M4eigKUgXN .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ckg0T5M4eigKUgXN .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ckg0T5M4eigKUgXN .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ckg0T5M4eigKUgXN .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ckg0T5M4eigKUgXN .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ckg0T5M4eigKUgXN .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ckg0T5M4eigKUgXN .marker.cross{stroke:#333333;}#mermaid-svg-ckg0T5M4eigKUgXN svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ckg0T5M4eigKUgXN p{margin:0;}#mermaid-svg-ckg0T5M4eigKUgXN .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ckg0T5M4eigKUgXN .cluster-label text{fill:#333;}#mermaid-svg-ckg0T5M4eigKUgXN .cluster-label span{color:#333;}#mermaid-svg-ckg0T5M4eigKUgXN .cluster-label span p{background-color:transparent;}#mermaid-svg-ckg0T5M4eigKUgXN .label text,#mermaid-svg-ckg0T5M4eigKUgXN span{fill:#333;color:#333;}#mermaid-svg-ckg0T5M4eigKUgXN .node rect,#mermaid-svg-ckg0T5M4eigKUgXN .node circle,#mermaid-svg-ckg0T5M4eigKUgXN .node ellipse,#mermaid-svg-ckg0T5M4eigKUgXN .node polygon,#mermaid-svg-ckg0T5M4eigKUgXN .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ckg0T5M4eigKUgXN .rough-node .label text,#mermaid-svg-ckg0T5M4eigKUgXN .node .label text,#mermaid-svg-ckg0T5M4eigKUgXN .image-shape .label,#mermaid-svg-ckg0T5M4eigKUgXN .icon-shape .label{text-anchor:middle;}#mermaid-svg-ckg0T5M4eigKUgXN .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ckg0T5M4eigKUgXN .rough-node .label,#mermaid-svg-ckg0T5M4eigKUgXN .node .label,#mermaid-svg-ckg0T5M4eigKUgXN .image-shape .label,#mermaid-svg-ckg0T5M4eigKUgXN .icon-shape .label{text-align:center;}#mermaid-svg-ckg0T5M4eigKUgXN .node.clickable{cursor:pointer;}#mermaid-svg-ckg0T5M4eigKUgXN .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ckg0T5M4eigKUgXN .arrowheadPath{fill:#333333;}#mermaid-svg-ckg0T5M4eigKUgXN .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ckg0T5M4eigKUgXN .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ckg0T5M4eigKUgXN .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ckg0T5M4eigKUgXN .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ckg0T5M4eigKUgXN .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ckg0T5M4eigKUgXN .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ckg0T5M4eigKUgXN .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ckg0T5M4eigKUgXN .cluster text{fill:#333;}#mermaid-svg-ckg0T5M4eigKUgXN .cluster span{color:#333;}#mermaid-svg-ckg0T5M4eigKUgXN div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ckg0T5M4eigKUgXN .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ckg0T5M4eigKUgXN rect.text{fill:none;stroke-width:0;}#mermaid-svg-ckg0T5M4eigKUgXN .icon-shape,#mermaid-svg-ckg0T5M4eigKUgXN .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ckg0T5M4eigKUgXN .icon-shape p,#mermaid-svg-ckg0T5M4eigKUgXN .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ckg0T5M4eigKUgXN .icon-shape .label rect,#mermaid-svg-ckg0T5M4eigKUgXN .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ckg0T5M4eigKUgXN .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ckg0T5M4eigKUgXN .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ckg0T5M4eigKUgXN :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Java 注解
标准注解
自定义注解
@Override
@Deprecated
@SuppressWarnings
@FunctionalInterface
@Retention SOURCE/CLASS/RUNTIME
@Target METHOD/FIELD/...

7.2 代码对照

C# Attribute Java Annotation 用途
[Obsolete] @Deprecated 标记过时
[Obsolete(message, error: true)] @Deprecated(since, forRemoval)
[Serializable] implements Serializable 序列化
[NonSerialized] transient 不序列化
[Flags] 枚举常量 位标志
自定义 Attribute 自定义 Annotation

7.3 自定义注解示例

csharp 复制代码
// C#
public class MyAttribute : Attribute {
    public string Name { get; set; }
}

[My(Name = "test")]
public void Method() { }
java 复制代码
// Java
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface My {
    String name() default "";
}

@My(name = "test")
public void method() { }

八、反射对照

8.1 数据结构

#mermaid-svg-ydmt9nTIsN7qTCWK{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ydmt9nTIsN7qTCWK .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ydmt9nTIsN7qTCWK .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ydmt9nTIsN7qTCWK .error-icon{fill:#552222;}#mermaid-svg-ydmt9nTIsN7qTCWK .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ydmt9nTIsN7qTCWK .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ydmt9nTIsN7qTCWK .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ydmt9nTIsN7qTCWK .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ydmt9nTIsN7qTCWK .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ydmt9nTIsN7qTCWK .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ydmt9nTIsN7qTCWK .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ydmt9nTIsN7qTCWK .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ydmt9nTIsN7qTCWK .marker.cross{stroke:#333333;}#mermaid-svg-ydmt9nTIsN7qTCWK svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ydmt9nTIsN7qTCWK p{margin:0;}#mermaid-svg-ydmt9nTIsN7qTCWK .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ydmt9nTIsN7qTCWK .cluster-label text{fill:#333;}#mermaid-svg-ydmt9nTIsN7qTCWK .cluster-label span{color:#333;}#mermaid-svg-ydmt9nTIsN7qTCWK .cluster-label span p{background-color:transparent;}#mermaid-svg-ydmt9nTIsN7qTCWK .label text,#mermaid-svg-ydmt9nTIsN7qTCWK span{fill:#333;color:#333;}#mermaid-svg-ydmt9nTIsN7qTCWK .node rect,#mermaid-svg-ydmt9nTIsN7qTCWK .node circle,#mermaid-svg-ydmt9nTIsN7qTCWK .node ellipse,#mermaid-svg-ydmt9nTIsN7qTCWK .node polygon,#mermaid-svg-ydmt9nTIsN7qTCWK .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ydmt9nTIsN7qTCWK .rough-node .label text,#mermaid-svg-ydmt9nTIsN7qTCWK .node .label text,#mermaid-svg-ydmt9nTIsN7qTCWK .image-shape .label,#mermaid-svg-ydmt9nTIsN7qTCWK .icon-shape .label{text-anchor:middle;}#mermaid-svg-ydmt9nTIsN7qTCWK .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ydmt9nTIsN7qTCWK .rough-node .label,#mermaid-svg-ydmt9nTIsN7qTCWK .node .label,#mermaid-svg-ydmt9nTIsN7qTCWK .image-shape .label,#mermaid-svg-ydmt9nTIsN7qTCWK .icon-shape .label{text-align:center;}#mermaid-svg-ydmt9nTIsN7qTCWK .node.clickable{cursor:pointer;}#mermaid-svg-ydmt9nTIsN7qTCWK .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ydmt9nTIsN7qTCWK .arrowheadPath{fill:#333333;}#mermaid-svg-ydmt9nTIsN7qTCWK .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ydmt9nTIsN7qTCWK .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ydmt9nTIsN7qTCWK .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ydmt9nTIsN7qTCWK .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ydmt9nTIsN7qTCWK .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ydmt9nTIsN7qTCWK .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ydmt9nTIsN7qTCWK .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ydmt9nTIsN7qTCWK .cluster text{fill:#333;}#mermaid-svg-ydmt9nTIsN7qTCWK .cluster span{color:#333;}#mermaid-svg-ydmt9nTIsN7qTCWK div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ydmt9nTIsN7qTCWK .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ydmt9nTIsN7qTCWK rect.text{fill:none;stroke-width:0;}#mermaid-svg-ydmt9nTIsN7qTCWK .icon-shape,#mermaid-svg-ydmt9nTIsN7qTCWK .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ydmt9nTIsN7qTCWK .icon-shape p,#mermaid-svg-ydmt9nTIsN7qTCWK .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ydmt9nTIsN7qTCWK .icon-shape .label rect,#mermaid-svg-ydmt9nTIsN7qTCWK .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ydmt9nTIsN7qTCWK .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ydmt9nTIsN7qTCWK .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ydmt9nTIsN7qTCWK :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Java Reflection
Class
Method
Field
Constructor
Annotation
getName/getModifiers
invoke
get/set
newInstance
getAnnotation

8.2 代码对照

csharp 复制代码
// C#
var type = typeof(MyClass);
var instance = Activator.CreateInstance(type);
var method = type.GetMethod("MyMethod");
method.Invoke(instance, new object[] { "param" });
java 复制代码
// Java
Class<?> clazz = MyClass.class;
Object instance = clazz.getDeclaredConstructor().newInstance();
Method method = clazz.getDeclaredMethod("myMethod", String.class);
method.invoke(instance, "param");

九、Lambda / 事件对照

9.1 数据结构

#mermaid-svg-dTEcOa3ltO44RaD8{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-dTEcOa3ltO44RaD8 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-dTEcOa3ltO44RaD8 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-dTEcOa3ltO44RaD8 .error-icon{fill:#552222;}#mermaid-svg-dTEcOa3ltO44RaD8 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-dTEcOa3ltO44RaD8 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-dTEcOa3ltO44RaD8 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-dTEcOa3ltO44RaD8 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-dTEcOa3ltO44RaD8 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-dTEcOa3ltO44RaD8 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-dTEcOa3ltO44RaD8 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-dTEcOa3ltO44RaD8 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-dTEcOa3ltO44RaD8 .marker.cross{stroke:#333333;}#mermaid-svg-dTEcOa3ltO44RaD8 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-dTEcOa3ltO44RaD8 p{margin:0;}#mermaid-svg-dTEcOa3ltO44RaD8 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-dTEcOa3ltO44RaD8 .cluster-label text{fill:#333;}#mermaid-svg-dTEcOa3ltO44RaD8 .cluster-label span{color:#333;}#mermaid-svg-dTEcOa3ltO44RaD8 .cluster-label span p{background-color:transparent;}#mermaid-svg-dTEcOa3ltO44RaD8 .label text,#mermaid-svg-dTEcOa3ltO44RaD8 span{fill:#333;color:#333;}#mermaid-svg-dTEcOa3ltO44RaD8 .node rect,#mermaid-svg-dTEcOa3ltO44RaD8 .node circle,#mermaid-svg-dTEcOa3ltO44RaD8 .node ellipse,#mermaid-svg-dTEcOa3ltO44RaD8 .node polygon,#mermaid-svg-dTEcOa3ltO44RaD8 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-dTEcOa3ltO44RaD8 .rough-node .label text,#mermaid-svg-dTEcOa3ltO44RaD8 .node .label text,#mermaid-svg-dTEcOa3ltO44RaD8 .image-shape .label,#mermaid-svg-dTEcOa3ltO44RaD8 .icon-shape .label{text-anchor:middle;}#mermaid-svg-dTEcOa3ltO44RaD8 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-dTEcOa3ltO44RaD8 .rough-node .label,#mermaid-svg-dTEcOa3ltO44RaD8 .node .label,#mermaid-svg-dTEcOa3ltO44RaD8 .image-shape .label,#mermaid-svg-dTEcOa3ltO44RaD8 .icon-shape .label{text-align:center;}#mermaid-svg-dTEcOa3ltO44RaD8 .node.clickable{cursor:pointer;}#mermaid-svg-dTEcOa3ltO44RaD8 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-dTEcOa3ltO44RaD8 .arrowheadPath{fill:#333333;}#mermaid-svg-dTEcOa3ltO44RaD8 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-dTEcOa3ltO44RaD8 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-dTEcOa3ltO44RaD8 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-dTEcOa3ltO44RaD8 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-dTEcOa3ltO44RaD8 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-dTEcOa3ltO44RaD8 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-dTEcOa3ltO44RaD8 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-dTEcOa3ltO44RaD8 .cluster text{fill:#333;}#mermaid-svg-dTEcOa3ltO44RaD8 .cluster span{color:#333;}#mermaid-svg-dTEcOa3ltO44RaD8 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-dTEcOa3ltO44RaD8 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-dTEcOa3ltO44RaD8 rect.text{fill:none;stroke-width:0;}#mermaid-svg-dTEcOa3ltO44RaD8 .icon-shape,#mermaid-svg-dTEcOa3ltO44RaD8 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-dTEcOa3ltO44RaD8 .icon-shape p,#mermaid-svg-dTEcOa3ltO44RaD8 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-dTEcOa3ltO44RaD8 .icon-shape .label rect,#mermaid-svg-dTEcOa3ltO44RaD8 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-dTEcOa3ltO44RaD8 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-dTEcOa3ltO44RaD8 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-dTEcOa3ltO44RaD8 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Lambda 表达式
函数式接口
Function T, R
Predicate T
Consumer T
Supplier R
BiFunction T, U, R

9.2 代码对照

csharp 复制代码
// C#
Func<int, int> square = x => x * x;
Predicate<int> isEven = x => x % 2 == 0;
Action<string> print = s => Console.WriteLine(s);

// 事件
button.Click += (sender, e) => Console.WriteLine("clicked");

// 自定义事件总线:定义事件 + 触发 + 订阅
public class UserCreatedEventArgs : EventArgs {
    public long UserId { get; }
    public UserCreatedEventArgs(long id) => UserId = id;
}

public class UserService {
    public event EventHandler<UserCreatedEventArgs>? UserCreated;
    public void Create(string name) {
        var id = Save(name);
        UserCreated?.Invoke(this, new UserCreatedEventArgs(id));
    }
}

// 订阅
userService.UserCreated += (s, e) => Console.WriteLine($"user created: {e.UserId}");
java 复制代码
// Java
Function<Integer, Integer> square = x -> x * x;
Predicate<Integer> isEven = x -> x % 2 == 0;
Consumer<String> print = s -> System.out.println(s);

// 事件(Lambda 注册)
button.addActionListener(e -> System.out.println("clicked"));

// Spring Event:定义事件 + 发布 + 监听(推荐 ApplicationEventPublisher)
public record UserCreatedEvent(Long userId) {}

@Component
public class UserEventListener {
    @EventListener
    public void handle(UserCreatedEvent event) {
        System.out.println("user created: " + event.userId());
    }
}

@Service
public class UserService {
    private final ApplicationEventPublisher publisher;

    public UserService(ApplicationEventPublisher publisher) {
        this.publisher = publisher;
    }

    public void create(String name) {
        Long id = save(name);
        publisher.publishEvent(new UserCreatedEvent(id));
    }
}

相关推荐
不才不才不不才20 小时前
Spring 源码系列(14): JDK 动态代理 vs CGLIB,以及拦截器责任链
java·开发语言·spring
用户31268748772020 小时前
Spring 事件机制到底怎么传播的?ApplicationEvent 源码拆解
java·spring
2501_9339232521 小时前
设计网页的时候加载不出来怎么办?认识常见的状态码
前端·spring
cyforkk1 天前
并发控制与状态安全:Single-Flight 与幂等性的本质区别
java·安全·spring
豆角焖肉1 天前
MyBatis延迟加载、缓存机制与注解开发
java·spring·mybatis
所愿ღ1 天前
SSM框架-Spring3
java·开发语言·笔记·spring
LSL666_1 天前
SpringBoot静态资源映射
java·spring boot·spring
不想纳尼的青春1 天前
记一次 .NET 某企业审批系统 崩溃分析
java·spring·.net
都叫我大帅哥1 天前
Spring @Transactional 注解完全指南
java·spring