跳到正文
cccskills
免费在 GitHub 公开

java-21

Java 21 language and runtime patterns for modern, safe code. Trigger: When writing Java 21 code using records, sealed types, or virtual threads.

中文简介正在准备中。当前显示原文说明。

Gentleman-Programming/Gentleman-Skills星标 660(GitHub 660 + cccskills 0)

实测评分 未实测

查看安装方法

包含的文件(1)

  • SKILL.md2.7 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

When to Use

Load this skill when:

  • Writing Java 21 application or library code
  • Designing immutable DTOs or value objects
  • Modeling closed hierarchies with sealed types
  • Using virtual threads for blocking I/O

Critical Patterns

Pattern 1: Records for immutable data

Use records for DTOs and value objects, validate in compact constructors.

Pattern 2: Sealed types + pattern matching

Use sealed interfaces/classes and switch pattern matching for exhaustiveness.

Pattern 3: Virtual threads for I/O

Use virtual threads to handle blocking I/O without large thread pools.

Code Examples

Example 1: Record with validation

package com.acme.user;

public record Email(String value) {
  public Email {
    if (value == null || !value.contains("@")) {
      throw new IllegalArgumentException("Invalid email");
    }
  }
}

Example 2: Sealed hierarchy + switch pattern matching

package com.acme.payment;

public sealed interface Payment permits Card, BankTransfer { }

public record Card(String last4) implements Payment { }
public record BankTransfer(String iban) implements Payment { }

public final class PaymentPrinter {
  public String describe(Payment payment) {
    return switch (payment) {
      case Card card -> "card-" + card.last4();
      case BankTransfer bank -> "iban-" + bank.iban();
    };
  }
}

Example 3: Virtual threads for blocking calls

package com.acme.io;

import java.util.concurrent.Executors;

public final class Fetcher {
  public void fetchAll(java.util.List<String> urls) throws Exception {
    try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
      for (String url : urls) {
        executor.submit(() -> blockingFetch(url));
      }
    }
  }

  private void blockingFetch(String url) {
    // perform blocking I/O here
  }
}

Anti-Patterns

Don't: Use mutable data carriers

// BAD: mutable DTO
public class UserDto {
  public String name;
  public String email;
}

Don't: Spin up raw platform threads per request

// BAD: expensive and unbounded
new Thread(() -> blockingFetch("https://api" )).start();

Quick Reference

TaskPattern
Immutable DTOsUse records with validation
Closed hierarchiesUse sealed interfaces + switch
Blocking I/O scaleUse virtual threads executor

Resources

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

ai-sdk-5

免费

Vercel AI SDK 5 patterns. Trigger: When building AI chat features - breaking changes from v4.

中文简介正在准备中。当前显示原文说明。

Gentleman-Programming/Gentleman-Skills6602026年3月28日 更新

Angular architecture: Scope Rule, project structure, file naming, style guide. Trigger: When structuring Angular projects or deciding where to place components.

中文简介正在准备中。当前显示原文说明。

Gentleman-Programming/Gentleman-Skills6602026年3月28日 更新

Angular core patterns: standalone components, signals, inject, control flow, zoneless. Trigger: When creating Angular components, using signals, or setting up zoneless.

中文简介正在准备中。当前显示原文说明。

Gentleman-Programming/Gentleman-Skills6602026年3月28日 更新

Angular forms: Signal Forms (experimental) and Reactive Forms. Trigger: When working with forms, validation, or form state in Angular.

中文简介正在准备中。当前显示原文说明。

Gentleman-Programming/Gentleman-Skills6602026年3月28日 更新

Angular performance: NgOptimizedImage, @defer, lazy loading, SSR. Trigger: When optimizing Angular app performance, images, or lazy loading.

中文简介正在准备中。当前显示原文说明。

Gentleman-Programming/Gentleman-Skills6602026年3月28日 更新

Django REST Framework patterns. Trigger: When building REST APIs with Django - ViewSets, Serializers, Filters.

中文简介正在准备中。当前显示原文说明。

Gentleman-Programming/Gentleman-Skills6602026年3月28日 更新

查看 Gentleman-Programming 的全部技能

报告此技能的问题