# CQCode对象
CQCode对象是框架内部对CQ码的一种封装对象,你可以通过`CQCodeUtil`工具类中的部分方法来获取这个对象。
此对象实现了`Java`中的`java.util.Map`接口,你可以像在`Java8`中操作Map集合那样来操作CQ码的参数。
**※ 请注意,你可以随意添加、修改、删除参数,但是你不可以修改、删除这个CQ码类型下所必要的参数。例如:\[CQ:at,qq=12346\]这样的CQ码对象,你不可以修改qq这个参数,而其他的参数你可以任意操作。**
>[success] CQCode的`ToString`方法即可直接获取到CQ码的字符串。
<br>
CQCode对象中提供了一些API以操作CQ码。以下将会列举这些API以及它们的作用。(举例中将不再包括`java.util.Map`中的内容。)
```java
/**
* 获取CQCode的类型
* @return CQCode的类型
*/
public CQCodeTypes getCQCodeTypes();
/**
* 获取CQ码字符串
* @return toString
*/
@Override
public String toString();
/**
* 是否获取根据当前真实参数获取ToString字符串
* 如果为false,则获取此类构建时候确定的CQ码字符串,
* 如果为true则会根据当前CQCode的真实参数来构建CQ码字符串
*/
public String toString(boolean realParam);
/**
* 获取某个参数
* 同{@link #get(Object)} 方法
* @param key key
* @return 参数
*/
public String getParam(String key)
/**
* 添加一个参数与值,同{@link #put(String, Object)} 方法
*/
public String addParam(String key, Object value);
/**
* 添加一个参数与值,同{@link #put(String, String)} 方法
*/
public String addParam(String key, String value);
/**
* 获取Stream<Entry>对象
* 在v1.2.4-BETA之后的版本增加。(不包括v1.2.4-BETA)
*/
public Stream<Entry<String, String>> stream();
```
## **后续更新**
>[info] 1.3.5-BETA
※ 核心版本1.3.5-BETA之后,我为CQCode对象新实现了3个接口:
`-> java.lang.CharSequence`
`-> Comparable<CQCode>`
`-> java.io.Serializable`
现在,CQCode对象可以:
* 进行排序
* 在某些地方可以直接作为字符串参数使用了(String 同样实现 `CharSequence` 接口)
增加了两个方法以转化为结果拼接集:
```
```java
/**
* 拼接一个{@link CharSequence} 实现类,切割符为空格
* @param append 一个{@link CharSequence} 实现类
*/
public AppendList append(CharSequence append);
/**
* 拼接一个{@link CharSequence} 实现类, 并指定字符串输出的时候的切割符
* @param append 拼接一个{@link CharSequence} 实现类
*/
public AppendList append(CharSequence append, CharSequence split);
/* 以上方法的append参数可以替换成部分基础数据类型例如int,long,double*/
```
```
现在你可以便捷的对多个CQCode对象或者字符串进行拼接了。拼接的默认切割符为一个空格。而关于`拼接集`的更多介绍请查阅章节`CQ码操作`\-`AppendList`拼接链
```
## **注意事项**
>[danger] 注①. 直至目前 (`1.7.x`) 版本,CQ码对于参数的权限控制等级要求较高,相对来说不够灵活,容易出现问题且效率较低。预计将会在后续某版本中放宽或移除权限验证。届时CQ码在构建的时候请保证参数可用,因为此时代码将不会对参数进行硬性验证。
- 前言
- 简单介绍
- 我该如何阅读文档
- 视频教程
- 安装与使用
- 开源协议
- 免责&捐助
- 注意事项
- 版本命名规则简介
- 主要功能版本历史
- 功能指引
- 通用API与功能
- 国际化语言
- 异常
- 消息监听
- @Listen
- @OnListen模板
- @Filter
- 消息参数截取
- @Spare
- @Constr
- @Ignore
- @ListenBreak
- @ListenBreakPlugin
- @ListenBody
- 监听响应
- 成功判定与返回值
- 监听上下文
- 动态参数
- 监听消息API
- 异步监听 @Async
- 限流监听 @Limit
- 自定义Http送信器
- 枚举与类型
- 送信器
- SENDER
- SETTER
- GETTER
- 返回值
- 其他位置
- 日志与日志拦截
- 异常处理
- 依赖注入
- 自定义依赖获取
- 批量依赖载入
- 注意事项
- 常量
- 定时任务
- 自定义过滤
- 拦截器
- 拦截器总定义
- 上下文对象总定义
- 监听消息拦截
- 送信器拦截
- 监听函数拦截
- CAT码
- CQ码
- CQCode
- CQ码工具类
- CQ扩展工具类
- AppendList拼接链
- 高级内容
- 阻断机制
- 截断机制
- 自定义枚举类型
- 枚举工厂
- byName注解
- 自定义注解
- 配置
- 文件配置
- 注解配置
- 参数配置
- 多配置
- 多账号
- 自定义账号管理器
- 小心!
- 核心版本与组件如何升级核心
- 核心版本迭代指南
- 核心
- 更新日志
- jar包与依赖
- 监听消息类结构图
- 快速启动
- 模组与扩展
- 模组开发
- 现有模组
- 通用模组-延时任务
- 通用模组-CQ码工具
- 转义器
- CQ码操作工具类
- CQ码模板-CodeTemplate
- CQ码载体-KQCode
- CQ码构建器
- MQ码工具类
- 通用模组-redis-bot管理器
- 通用模组-Debugger
- Debugger-common模块
- Debugger-server模块
- Debugger-client模块
- 通用模组-钉钉机器人
- 组件-Mirai(JVM)
- 快速开始(1.13+)
- springboot-starter
- 注意事项
- 配置
- 额外的内容
- 快速回复
- 额外监听
- CQ码解析
- 组件-酷Q(QQ)-CQ HTTP API(基本失效)
- 快速开始(推荐)
- 快速开始(1.7.x以下,不推荐)
- 快速开始(Springboot启动器)
- 启动器、启动接口与配置类
- 配置
- 文件配置
- 注意事项
- 更新日志
- 额外的内容
- 自定义额外监听
- CQ送信器
- 元事件
- 监听消息类结构图
- 组件-酷Q(QQ)-JCQ(失效)
- 快速开始
- 更新日志
- 额外的内容
- JCQ日志
- 配置
- 注意事项
- 监听消息类结构图
- 组件-酷Q(QQ)-HTTP TO CQ(失效)
- 快速开始(核心1.7.x及以下)
- 启动器、启动接口与配置类
- 配置
- 文件配置
- 注意事项
- 更新日志
- 监听消息类结构图
- 组件-酷Q(QQ)-LEMOC (失效)
- 快速开始(核心1.7.x及以下)
- 配置
- 注意事项
- 更新日志
- 监听消息类结构图
- Springboot快速启动器
- 常见问题汇总
- BUG反馈
- 更新计划总览