# @contract-case/java-ast 中文文档

规范地址：https://npmcn.com/package/%40contract-case/java-ast/

版本：0\.0\.2
npm 元数据更新时间：2025-12-14T12:13:49.301Z
中文译文更新时间：2026-11-10T17:05:54.905Z
软件包许可：未声明

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40contract-case/java-ast
原文对照：https://npmcn.com/package/%40contract-case/java-ast/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：162 kB，59 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：3 个
- 首次发布：2025-12-14T12:13:48.754Z
- 最新版本发布：2025-12-14T12:13:48.988Z
- 近 30 天下载量：1125114（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 1 个）

## 中文简介

这是一个 _临时_ 叉数 [@ impress/ java- ast (英语)](https://github.com/amplication/java-ast)它的存在是为了解决下列问题:

## 安装

```sh
npm install @contract-case/java-ast
```

也可以使用：`pnpm add @contract-case/java-ast`、`yarn add @contract-case/java-ast`、`bun add @contract-case/java-ast`

## README

# @ contract-case/java-ast (英语)

这是一个 _临时_ 叉数 [@ impress/ java- ast (英语)](https://github.com/amplication/java-ast)它的存在是为了解决下列问题:

-   [#9844: 不支持构造器文档](https://github.com/amplication/amplication/issues/9844)
-   [#9845:引用时重复导入](https://github.com/amplication/amplication/issues/9845)

在编写本报告时,每期都有公开公关:

-   [https://github.com/ampress/ast-types/pull/9 (英语)](https://github.com/amplication/ast-types/pull/9)
-   [https://github.com/ampress/ast-types/pull/6 互联网档案馆的存檔,存档日期2014-12-02](https://github.com/amplication/ast-types/pull/6)

然而,这些尚未有任何活动,所以我不确定项目是否得到维持.

我并不想长期维持这个分叉 希望公关会合并到原来的仓库里.

原始读取如下.

* * *

# @ impress/ java- ast (英语)

一个通过抽象语法树(AST)方法生成Java代码的库. 这个库允许您以类型安全的方式程序化生成Java代码.

## 范围和目的

Java AST 库并不是要覆盖所有的Java语言功能. 取而代之的是,它侧重于用Amprextion插件创建地基和锅炉板代码所需的元素. 库为生成结构完善的Java代码用于常见模式和使用案例提供构件.

当需要更专业或定制代码时 `CodeBlock` 类可以用作通用节点,可以包括任何代码作为字符串:

```typescript
import { CodeBlock } from '@amplication/java-ast';

// Create a custom code block for specialized logic
const customLogic = new CodeBlock(`
  // Custom Java implementation
  try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
    String line;
    while ((line = reader.readLine()) != null) {
      processLine(line);
    }
  } catch (IOException e) {
    logger.error("Error reading file", e);
  }
`);

// Add to your class or method
```

## 安装

```sh
npm install @amplication/java-ast
```

## 大楼

运行 `nx build java-ast` 来建造图书馆.

## 运行单元测试

运行 `nx test java-ast` 通过 [欢乐](https://jestjs.io/)。 。 。 .

## 发布到 npm

要发布到 npm `@amplication/java-ast` 数字 :

1.  确保更新软件包中的版本. json.
2.  运行如下 :

```sh
# From the monorepo root folder
npm i

npx nx build java-ast

cd ./dist/libs/java-ast

```

要将软件包发布为"beta"运行 :

```
npm publish --access public --tag beta
```

要将软件包发布为“ 最新” 运行 :

```sh

npm publish --access public
    
```

## 特征

-   类型安全 Java 代码生成
-   支持所有核心Java构造(类,界面,enum,方法,字段等)
-   自动导入管理
-   JavaDoc 生成
-   适当的代码格式化

## 基本用途

```typescript
import {
  Class,
  Field,
  Method,
  Parameter,
  Type,
  Access,
  Annotation,
  ClassReference,
  CodeBlock,
  Writer
} from '@amplication/java-ast';

// Create a class
const userClass = new Class({
  name: 'User',
  packageName: 'com.example.model',
  access: Access.Public,
  annotations: [
    new Annotation({
      reference: new ClassReference({
        name: 'Entity',
        packageName: 'javax.persistence'
      })
    })
  ]
});

// Add fields
userClass.addField(new Field({
  name: 'id',
  type: Type.long(),
  access: Access.Private,
  annotations: [
    new Annotation({
      reference: new ClassReference({
        name: 'Id',
        packageName: 'javax.persistence'
      })
    }),
    new Annotation({
      reference: new ClassReference({
        name: 'GeneratedValue',
        packageName: 'javax.persistence'
      }),
      namedArguments: new Map([
        ['strategy', 'GenerationType.IDENTITY']
      ])
    })
  ]
}));

userClass.addField(new Field({
  name: 'username',
  type: Type.string(),
  access: Access.Private,
  javadoc: 'The username of the user.'
}));

// Add a constructor
userClass.addConstructor({
  access: Access.Public,
  parameters: [
    new Parameter({
      name: 'username',
      type: Type.string()
    })
  ],
  body: new CodeBlock({
    code: 'this.username = username;'
  })
});

// Add a method
userClass.addMethod(new Method({
  name: 'getUsername',
  access: Access.Public,
  parameters: [],
  returnType: Type.string(),
  body: new CodeBlock({
    code: 'return username;'
  })
}));

// Generate Java code
const writer = new Writer({ packageName: 'com.example.model' });
userClass.write(writer);
const javaCode = writer.toString();

console.log(javaCode);
```

产出如下:

```java
package com.example.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    /**
     * The username of the user.
     */
    private String username;

    public User(String username) {
        this.username = username;
    }

    public String getUsername() {
        return username;
    }
}
```

## 高级使用

### 创建接口

```typescript
import { Interface, Method, Type, Access } from '@amplication/java-ast';

const repository = new Interface({
  name: 'UserRepository',
  packageName: 'com.example.repository',
  access: Access.Public,
  extends_: [
    new ClassReference({
      name: 'JpaRepository',
      packageName: 'org.springframework.data.jpa.repository'
    })
  ]
});

// Add methods to the interface
repository.addMethod(new Method({
  name: 'findByUsername',
  access: Access.Public,
  parameters: [
    new Parameter({
      name: 'username',
      type: Type.string()
    })
  ],
  returnType: Type.optional(Type.reference(
    new ClassReference({ name: 'User', packageName: 'com.example.model' })
  ))
}));
```

### 创建 Enums

```typescript
import { Enum, Access } from '@amplication/java-ast';

const roleEnum = new Enum({
  name: 'Role',
  packageName: 'com.example.model',
  access: Access.Public,
  javadoc: 'User roles in the system.'
});

// Add enum values
roleEnum.addValue({ name: 'ADMIN' });
roleEnum.addValue({ name: 'USER' });
roleEnum.addValue({ name: 'GUEST' });
```

## 许可证

麻省理工学院

## 常见问题

### @contract-case/java-ast 是什么？

这是一个 临时 叉数 @ impress/ java- ast \(英语\)它的存在是为了解决下列问题:

### 如何安装 @contract-case/java-ast？

在项目目录运行 npm install @contract-case/java-ast，或使用 pnpm add / yarn add / bun add。

### @contract-case/java-ast 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @contract-case/java-ast 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @contract-case/java-ast 可以商用吗？

@contract-case/java-ast 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @contract-case/java-ast 的下载量有多少？

根据 npm 官方下载统计，@contract-case/java-ast 在 2026/10/11 – 2026/11/09 这 30 天内被下载 1,125,114 次，日均约 37,504 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @contract-case/java-ast 还在维护吗？

最新版本 0\.0\.2 发布于 2025/12/14（10 个月前）；至今共发布 1 个版本，其中过去 12 个月发布了 1 个；首次发布于 2025/12/14。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

