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(数值相等)
关键陷阱:
new BigDecimal(double)会引入精度噪声,金融场景必须用String构造equals区分 scale,业务比较永远用compareTodivide可能抛ArithmeticException(无限循环小数),必须显式指定RoundingMode或MathContext
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));
}
}