# Zircon
**Repository Path**: 122006/Zircon
## Basic Information
- **Project Name**: Zircon
- **Description**: 提供Java对拓展方法及内插模板字符串的语法插件
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 1
- **Created**: 2021-06-26
- **Last Updated**: 2025-07-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Zircon [](https://jitpack.io/#122006/Zircon)
-----------------
## Zircon可以让你在Java语言代码中直接使用一些特殊的语法
* **快速接入**: 在已有java项目使用,最快**2**行代码引入。
* **无缝衔接**: 所有新增语法和java8-23版本基础语法完全兼容,无需更换语言提升开发体验。
* **依赖安全**: 不依赖第三方库,且构建结果为正常jar文件,无依赖传染
----------------
#### 已支持的语法特性:
### 1. 全局拓展方法
> 自由拓展已有代码的实现方法。可以实现诸如顶级方法、方法替换等功能
> 特别的,支持限制仅对含有指定注解的类进行拓展(例@Service、@Repository、@Data)

### 2. 可选链 _v3.3.0预览支持_
`String text=XXX.returnNull()?.getText(); //不会抛出空指针异常,而是返回null`
> 简化了在中间属性可能为null时访问嵌套对象或数组的属性和方法的过程。
>
> 可选链运算符(?.)允许您在不需要显式null检查的情况下访问属性或方法。如果链中的任何中间属性为null,则表达式会短路,并将结果设置为null。
>
> 在编程中,“短路”是指当沿着正在访问的属性或方法链遇到null值时,表达式的评估会立即停止的行为。与继续评估表达式不同,结果会立即设置为null,并跳过任何后续的属性或方法访问。
>
> 如果可选链后续使用了`elvis`表达式,`elvis`表达式将同时作为可选链的默认值。 特别的,对于单赋值语句,链式不满足时直接跳过该语句执行
### 3. `elvis`表达式 _v3.3.0预览支持_
`String text= xxxx.returnNull() ?: "默认值"; //简单使用`
> 当左侧表达式返回结果为null时,返回右侧表达式的值
### 4. 内插模板字符串
`String text=$"My name is $ID.name ";//简单使用`
`String text=f"My age is ${%02d:ID.age} ";//带格式化的模板字符串`
> 字符串插值功能构建在复合格式设置功能的基础之上,提供更具有可读性、更方便的语法,用于将表达式结果包括到结果字符串。
---------------
1. 支持android、springboot、javaFX等所有使用java语言的项目(javac)
2. 支持java8~java23
---------------
### 使用说明
#### [内插模板字符串(点击跳转)](mds/README_ZrString.md)
#### [全局拓展方法(点击跳转)](mds/README_ZrExMethod.md)
> 如何定义一个拓展方法?[
*快速跳转至示例`ExMethodUtil`*](https://github.com/122006/ExMethodUtil/tree/main/impl/src/main/java/zircon/example)
#### [可选链 & `elvis`表达式(点击跳转)](mds/README_ZrOptionalChaining.md)
### 插件引入
使用Gradle构建项目(点击展开)
#### 使用ZrString插件自动引入依赖
Step 1.在你的根项目`build.gradle`文件中进行如下操作
````
buildscript {
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
classpath 'com.github.122006.Zircon:gradle:3.2.6'
}
}
````
当前版本号:[](https://jitpack.io/#122006/Zircon)
Step 2.在需要使用插件的module的`build.gradle`首行引入插件`apply plugin: 'zircon'`
使用Maven构建项目(点击展开)
Step 1. 增加依赖
### 其他注意事项
1. 请注意保持idea插件更新到最新。插件仓库审核有可能有滞后,请优先手动安装
--------------
## ChangeLog
### v3.2.6
1. 现在拓展方法会根据import列表进行导入,修复偶现的编译期问题
2. 对实例拓展方法拓展`Class>`时,允许省略`.class`,类似于静态方法效果但可以获得实际类型
3. 优化编译速度
4. 增加`@ExMethodIDE`注解,以增强ide的提示特性
历史依赖更新
### v2.2
1. 重构已有代码,提高编译性能及拓展性
2. 使用gradle编译idea插件
### v2.4
1. 支持jdk11、android30
### v2.5
1. 支持内部代码段中使用不转义的引号
### v2.7
1. 不再支持使用单引号转义双引号语法
2. 支持使用gradle插件配置项目
3. 重构以支持jdk16、jdk17
### v3.0
1. 支持拓展方法
### v3.1.2
1. 支持在成员方法引用中对外部引用调用拓展方法的情况
### v3.1.3
1. 修复了一个导致编译时间过长的问题
### v3.1.4
1. gradle插件支持使用id方式引入
### v3.1.6
1. 修复一个特殊情况下与已有方法同名异参的会解析错误问题
2. 修复强制覆盖原有实现方法时,使用方法引用会提示引用重复的问题
### v3.1.8
1. 修复idea中使用Maven构建项目build错误的问题
### v3.2.0
1. 重用已解析的参数类型提高编译速度。
2. 修复罕见情况下的多层匿名类指向错误的问题
3. 现在如果存在多个匹配的拓展方法实现,会自动使用路径最相近的实现
### v3.2.2
1. 优化项目依赖结构
### v3.2.3
1. 支持java21、java22
2. 优化项目编译结构
历史idea插件更新
### idea插件2.0
1. 支持`f-string`自动提示格式符及类型匹配错误
2. 普通字符串支持自动识别转化为`$-string`
### idea插件2.1
1. 模板字符串结构字符会用特殊颜色标出
### idea插件2.3
1. 修复启动后一段时间代码异常检查失效的问题
### idea插件2.4
1. 支持拓展方法
2. 在未引入该项目的代码中,不再提示模板字符串功能
### idea插件2.5
1. 拓展方法显示优化
### idea插件2.6
1. 拓展方法显示优化
### idea插件2.7
1. 拓展方法自动引包相关支持
### idea插件2.8
1. 支持在成员方法引用中对外部引用调用拓展方法的情况
### idea插件2.9
1. 在idea 203以上版本支持了拓展方法引用处点击跳转。203以下版本会跳转到代理对象
### idea插件3.0
1. 重构了拓展方法及自动提示。现在已支持代理泛型推断及泛型数组推断
### idea插件3.1
1. 增强了模板字符串和拓展函数的联合效果。使用拓展函数支持自动引包
### idea插件3.2
1. 修复idea2023.3版本的兼容性问题
2. 当输入于变量后自动补全时,不再提示其静态方法
### idea插件3.3
1. 修复部分问题
### idea插件3.4
1. 强化自动补全功能对代理类泛型的支持
### idea插件3.5
1. 强化自动补全功能对代理类泛型的支持:优化泛型继承解析
2.
### idea插件3.6
1. 功能性优化
### idea插件3.8
1. 支持同名方法自动解析
2. 原有方法冲突时,自动使用原有方法
### idea插件4.1
1. 拓展方法注解能力拓展,支持3.2.5新增`@ExMethod`注解属性、及`@ExMethodIDE`注解
2. 现在插件的检测范围只限制于当前已申明插件的module,并只会提供其引入的拓展方法
### idea插件4.2
1. 修复4.1版本对基本类型数组拓展方法无法补全的问题
2. 对cover类型拓展方法使用处增加提示信息及自动import