# 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码在构建的时候请保证参数可用,因为此时代码将不会对参数进行硬性验证。