From c4b6449ae2686772c4ab318ba75389b6a4df21ea Mon Sep 17 00:00:00 2001 From: mb7o3ja5v <969685829@qq.com> Date: Wed, 27 Nov 2024 10:23:50 +0800 Subject: [PATCH 01/31] Initial commit --- README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..e17b963 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# wx-dump-4j + -- 2.34.1 From 038451ee66886758130aec7169d1adb9538c0acf Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 20:41:52 +0800 Subject: [PATCH 02/31] 1 --- wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java index df0b934..b0eda7c 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java @@ -7,15 +7,12 @@ import lombok.Data; * UserBO * * @author xcs - * @date 2023年12月31日15:25:21 */ @Data @Builder public class UserBO { - /** - * 文件目录 - */ + //初始化文件目录 private String basePath; /** -- 2.34.1 From 280df88b97a7480426a760c4af99d8ba34310a79 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 20:58:07 +0800 Subject: [PATCH 03/31] 1 --- wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java index b0eda7c..837e9eb 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java @@ -12,7 +12,7 @@ import lombok.Data; @Builder public class UserBO { - //初始化文件目录 + //初始化文件目录... private String basePath; /** -- 2.34.1 From 75e0e2cba1beb9da84c6a52ca8f0d38b8e1794db Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 22:16:12 +0800 Subject: [PATCH 04/31] 1 --- .../java/com/xcs/wx/domain/bo/UserBO.java | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java index 837e9eb..0440342 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java @@ -15,28 +15,18 @@ public class UserBO { //初始化文件目录... private String basePath; - /** - * 微信Id - */ + //初始化微信id private String wxId; - /** - * 昵称 - */ + //初始化昵称 private String nickname; - /** - * 版本号 - */ + //初始化版本号 private String version; - /** - * 账号 - */ + //初始化账号 private String account; - /** - * 手机号 - */ + //初始化手机号 private String mobile; } -- 2.34.1 From 008d3c727e0d01ed1dadc5c0dca6db51d38471a0 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 22:22:51 +0800 Subject: [PATCH 05/31] 1 --- .../java/com/xcs/wx/domain/bo/VoipMsgBO.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java index cc08672..d12f85d 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java @@ -6,26 +6,32 @@ import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; import lombok.Data; -/** - * VoipMsgBO - * - * @author xcs - * @date 2024年01月17日 15时15分 - **/ + @Data +// 使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法, +// 以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 @JsonIgnoreProperties(ignoreUnknown = true) +// 这个注解告诉Jackson在进行JSON反序列化时,忽略那些在目标对象中不存在对应属性的未知属性, +// 防止因为额外的、不认识的JSON字段而抛出异常 @JacksonXmlRootElement(localName = "voipmsg") +// 用于指定在将对象序列化为XML时,这个类对应的XML根元素的名称为"voipmsg" public class VoipMsgBO { @JacksonXmlProperty(localName = "VoIPBubbleMsg") private VoIPBubbleMsg voIPBubbleMsg; + // 使用JacksonXmlProperty注解指定这个字段在序列化为XML时对应的元素名称为"VoIPBubbleMsg", + // 它的类型是内部定义的VoIPBubbleMsg类,用于封装相关的数据 @Data @JsonIgnoreProperties(ignoreUnknown = true) public static class VoIPBubbleMsg { + // 定义了一个内部静态类,同样使用了Data注解和JsonIgnoreProperties注解,具备和外部类类似的功能 @JacksonXmlCData @JacksonXmlProperty(localName = "msg") private String msg; + // @JacksonXmlCData注解表示这个字段在序列化为XML时,其内容会被包裹在中, + // 通常用于包含可能包含特殊XML字符(如<、>等)的数据,防止XML解析出错。 + // @JacksonXmlProperty注解指定该字段在XML中的元素名称为"msg",它用于存储一个字符串类型的消息内容 } } -- 2.34.1 From 99a2a516c77714dc2093d93c7f73d7a514013d0b Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 22:25:03 +0800 Subject: [PATCH 06/31] 1 --- .../com/xcs/wx/domain/dto/ChatRoomDTO.java | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java index d475da5..04371f2 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java @@ -3,28 +3,16 @@ package com.xcs.wx.domain.dto; import lombok.Data; import lombok.EqualsAndHashCode; -/** - * ChatRoomDTO - * - * @author xcs - * @date 2024年01月08日 16时24分 - **/ @Data @EqualsAndHashCode(callSuper = true) public class ChatRoomDTO extends PageDTO { - /** - * 群聊标题 - */ + //初始化群聊标题 private String chatRoomTitle; - /** - * 群昵称 - */ + //初始化群昵称 private String selfDisplayName; - /** - * 创建人 - */ + //初始化创建人 private String createBy; } -- 2.34.1 From 60f588142223f0b3cb40b7b7d6573c2283534b6b Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 22:29:48 +0800 Subject: [PATCH 07/31] 1 --- .../com/xcs/wx/domain/dto/ContactDTO.java | 23 +++--------- .../com/xcs/wx/domain/dto/DecryptDTO.java | 36 +++++-------------- .../java/com/xcs/wx/domain/dto/FeedsDTO.java | 22 ++++-------- .../java/com/xcs/wx/domain/dto/PageDTO.java | 16 ++------- .../xcs/wx/domain/dto/RecoverContactDTO.java | 16 +++------ 5 files changed, 27 insertions(+), 86 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ContactDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ContactDTO.java index 772fc19..9520a59 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ContactDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ContactDTO.java @@ -2,34 +2,19 @@ package com.xcs.wx.domain.dto; import lombok.Data; import lombok.EqualsAndHashCode; - -/** - * ContactDTO - * - * @author xcs - * @date 2023年12月31日15:25:21 - */ @Data @EqualsAndHashCode(callSuper = true) public class ContactDTO extends PageDTO { - /** - * 备注 - */ + //初始化备注 private String remark; - /** - * 昵称 - */ + //初始化昵称 private String nickName; - /** - * 标签Id - */ + //初始化标签id private String labels; - /** - * 描述 - */ + //初始化描述 private String describe; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/DecryptDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/DecryptDTO.java index 02cc30e..fc46bee 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/DecryptDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/DecryptDTO.java @@ -2,47 +2,29 @@ package com.xcs.wx.domain.dto; import lombok.Data; -/** - * DecryptDTO - * - * @author xcs - * @date 2023年12月31日15:25:21 - */ + @Data public class DecryptDTO { - /** - * pid - */ + //初始化pid private int pid; - /** - * 文件目录 - */ + //初始化文件目录 private String basePath; - /** - * 微信Id - */ + //初始化微信id private String wxId; - /** - * 昵称 - */ + //初始化昵称 private String nickname; - /** - * 版本号 - */ + //初始化版本号 private String version; - /** - * 账号 - */ + //初始化账号 + private String account; - /** - * 手机号 - */ + //初始化手机号 private String mobile; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/FeedsDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/FeedsDTO.java index a5ca6db..10df7e1 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/FeedsDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/FeedsDTO.java @@ -3,28 +3,20 @@ package com.xcs.wx.domain.dto; import lombok.Data; import lombok.EqualsAndHashCode; -/** - * FeedsDTO - * - * @author xcs - * @date 2024年01月03日 17时17分 - **/ + @Data @EqualsAndHashCode(callSuper = true) public class FeedsDTO extends PageDTO { - /** - * 用户名 - */ + //初始化用户名 + private String userName; - /** - * 开始时间 - */ + //初始化开始时间 + private Long startTime; - /** - * 结束时间 - */ + //初始化结束时间 + private Long endTime; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/PageDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/PageDTO.java index 47266e3..712450f 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/PageDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/PageDTO.java @@ -1,23 +1,13 @@ package com.xcs.wx.domain.dto; import lombok.Data; - -/** - * PageDTO - * - * @author xcs - * @date 2023年12月29日 15时58分 - **/ @Data public class PageDTO { - /** - * 当前页数 - */ + //初始化当前页数 + private Long current; - /** - * 页数大小 - */ + //初始化页数大小 private Long pageSize; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java index 03d0044..3c3d5b1 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java @@ -3,23 +3,15 @@ package com.xcs.wx.domain.dto; import lombok.Data; import lombok.EqualsAndHashCode; -/** - * RecoverContactDTO - * - * @author xcs - * @date 2024年6月14日15:29:54 - **/ @Data @EqualsAndHashCode(callSuper = true) public class RecoverContactDTO extends PageDTO{ - /** - * nickname - */ + //初始化nickname + private String nickname; - /** - * c2remark - */ + //初始化c2remark + private String remark; } -- 2.34.1 From 22469aa38a08fc05a0dda0e03f521cefc652d34c Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 22:59:00 +0800 Subject: [PATCH 08/31] 1 --- .../com/xcs/wx/domain/vo/AllContactVO.java | 18 ++-- .../java/com/xcs/wx/domain/vo/CardLinkVO.java | 28 +++--- .../xcs/wx/domain/vo/ChatRoomDetailVO.java | 53 +++++------ .../com/xcs/wx/domain/vo/ChatRoomInfoVO.java | 43 ++++----- .../xcs/wx/domain/vo/ChatRoomMemberVO.java | 28 +++--- .../java/com/xcs/wx/domain/vo/ChatRoomVO.java | 58 +++++-------- .../com/xcs/wx/domain/vo/ContactLabelVO.java | 18 ++-- .../java/com/xcs/wx/domain/vo/ContactVO.java | 48 ++++------ .../xcs/wx/domain/vo/CountRecentMsgsVO.java | 23 ++--- .../java/com/xcs/wx/domain/vo/DatabaseVO.java | 18 ++-- .../java/com/xcs/wx/domain/vo/DecryptVO.java | 28 +++--- .../xcs/wx/domain/vo/ExportChatRoomVO.java | 48 ++++------ .../com/xcs/wx/domain/vo/ExportContactVO.java | 38 +++----- .../com/xcs/wx/domain/vo/ExportMsgVO.java | 43 ++++----- .../com/xcs/wx/domain/vo/FeedsLocationVO.java | 33 +++---- .../com/xcs/wx/domain/vo/FeedsMediaVO.java | 18 ++-- .../java/com/xcs/wx/domain/vo/FeedsVO.java | 87 +++++++------------ 17 files changed, 231 insertions(+), 399 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/AllContactVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/AllContactVO.java index ffb5a3e..c81e330 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/AllContactVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/AllContactVO.java @@ -2,22 +2,16 @@ package com.xcs.wx.domain.vo; import lombok.Data; -/** - * AllContactVO - * - * @author xcs - * @date 2024年02月07日 11时15分 - **/ +//AllContactVO + @Data public class AllContactVO { - /** - * 用户名 - */ + //用户名 + private String userName; - /** - * 昵称。 - */ + //昵称。 + private String nickName; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CardLinkVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CardLinkVO.java index 8626e3b..d7e6d08 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CardLinkVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CardLinkVO.java @@ -2,32 +2,24 @@ package com.xcs.wx.domain.vo; import lombok.Data; -/** - * CardLinkVO - * - * @author xcs - * @date 2024年01月17日 14时50分 - **/ +// CardLinkVO + @Data public class CardLinkVO { - /** - * title - */ + //title + private String title; - /** - * sourceDisplayName - */ + //sourceDisplayName + private String sourceDisplayName; - /** - * des - */ + //des + private String des; - /** - * url - */ + // url + private String url; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomDetailVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomDetailVO.java index ff9ed4b..4988e5e 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomDetailVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomDetailVO.java @@ -5,59 +5,46 @@ import lombok.Data; import java.util.List; -/** - * ChatRoomDetailVO - * - * @author xcs - * @date 2024年01月08日 16时10分 - **/ +// ChatRoomDetailVO + @Data public class ChatRoomDetailVO { - /** - * 群聊名称 - */ + //群聊名称 + private String chatRoomName; - /** - * 群聊标题 - */ + //群聊标题 + private String chatRoomTitle; - /** - * 自己在聊天室中的显示名称。 - */ + // 自己在聊天室中的显示名称。 + private String selfDisplayName; - /** - * 创建人 - */ + //创建人 + private String createBy; - /** - * 头像 - */ + //头像 + private String headImgUrl; - /** - * 预留字段2 - */ + //预留字段2 + @JsonIgnore private String reserved2; - /** - * roomData - */ + //roomData + @JsonIgnore private byte[] roomData; - /** - * 群聊信息 - */ + //群聊信息 + private ChatRoomInfoVO chatRoomInfo; - /** - * 群成员 - */ + //群成员 + private List members; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomInfoVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomInfoVO.java index c809559..9d8d330 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomInfoVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomInfoVO.java @@ -2,47 +2,36 @@ package com.xcs.wx.domain.vo; import lombok.Data; -/** - * ChatRoomInfoVO - * - * @author xcs - * @date 2024年01月09日 15时27分 - **/ +//ChatRoomInfoVO + @Data public class ChatRoomInfoVO { - /** - * 聊天室公告内容。 - */ + //聊天室公告内容。 + private String announcement; - /** - * 信息版本号,默认为 0。 - */ + //信息版本号,默认为 0。 + private Integer infoVersion; - /** - * 公告编辑者。 - */ + //公告编辑者。 + private String announcementEditor; - /** - * 公告发布人 - */ + //公告发布人 + private String announcementPublisher; - /** - * 公告发布时间,存储为时间戳,默认为 0。 - */ + //公告发布时间,存储为时间戳,默认为 0。 + private Long announcementPublishTime; - /** - * 公告发布时间 - */ + //公告发布时间 + private String strAnnouncementPublishTime; - /** - * 聊天室状态,默认为 0。 - */ + //聊天室状态,默认为 0。 + private Integer chatRoomStatus; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java index 9d0f4bf..c4f2bb0 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java @@ -2,32 +2,24 @@ package com.xcs.wx.domain.vo; import lombok.Data; -/** - * ChatRoomMemberVO - * - * @author xcs - * @date 2024年01月08日 16时10分 - **/ +//ChatRoomMemberVO + @Data public class ChatRoomMemberVO { - /** - * wxId - */ + //wxId + private String wxId; - /** - * 备注 - */ + //备注 + private String remark; - /** - * 备注 - */ + //备注 + private Integer state; - /** - * 头像 - */ + //头像 + private String headImgUrl; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomVO.java index 9b72386..b4eeab5 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomVO.java @@ -3,63 +3,49 @@ package com.xcs.wx.domain.vo; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; -/** - * ChatRoomVO - * - * @author xcs - * @date 2024年01月08日 16时10分 - **/ +//ChatRoomVO + @Data public class ChatRoomVO { - /** - * 聊天室名称 - */ + //聊天室名称 + private String chatRoomName; - /** - * 群聊标题 - */ + //群聊标题 + private String chatRoomTitle; - /** - * 是否显示名称的标志 - */ + //是否显示名称的标志 + private Integer isShowName; - /** - * 自己在聊天室中的显示名称。 - */ + //自己在聊天室中的显示名称。 + private String selfDisplayName; - /** - * 创建人 - */ + //创建人 + private String createBy; - /** - * 头像 - */ + //头像 + private String headImgUrl; - /** - * 群聊是否已经解散 - */ + //群聊是否已经解散 + private Boolean dissolution; - /** - * 是否为企业微信群 - */ + //是否为企业微信群 + private Boolean enterprise; - /** - * 群聊数据 - */ + //群聊数据 + @JsonIgnore private byte[] roomData; - /** - * 群聊人数 - */ + //群聊人数 + private Integer memberCount; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactLabelVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactLabelVO.java index 7dfe99a..7d63713 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactLabelVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactLabelVO.java @@ -2,22 +2,16 @@ package com.xcs.wx.domain.vo; import lombok.Data; -/** - * ContactLabelVO - * - * @author xcs - * @date 2023年12月21日 18时13分 - **/ +//ContactLabelVO + @Data public class ContactLabelVO { - /** - * 标签Id - */ + //标签Id + private String labelId; - /** - * 标签名称 - */ + //标签名称 + private String labelName; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactVO.java index 1aa9f56..1d12879 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactVO.java @@ -4,52 +4,40 @@ import lombok.Data; import java.util.List; -/** - * ContactVO - * - * @author xcs - * @date 2023年12月22日 14时43分 - **/ +//ContactVO + @Data public class ContactVO { - /** - * 用户名 - */ + //用户名 + private String userName; - /** - * 别名。 - */ + //别名。 + private String alias; - /** - * 备注信息。 - */ + //备注信息。 + private String remark; - /** - * 昵称。 - */ + //昵称。 + private String nickName; - /** - * 描述 - */ + //描述 + private String describe; - /** - * 头像 - */ + // 头像 + private String headImgUrl; - /** - * 标签Id - */ + //标签Id + private String labelIdList; - /** - * 标签 - */ + //标签 + private List labels; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CountRecentMsgsVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CountRecentMsgsVO.java index 0ba43c6..7565b33 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CountRecentMsgsVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CountRecentMsgsVO.java @@ -2,27 +2,20 @@ package com.xcs.wx.domain.vo; import lombok.Data; -/** - * CountRecentMsgsVO - * - * @author xcs - * @date 2024年01月06日 14时21分 - **/ +// CountRecentMsgsVO + @Data public class CountRecentMsgsVO { - /** - * 类型 - */ + // 类型 + private String type; - /** - * 值 - */ + //值 + private Long value; - /** - * 分类 - */ + //分类 + private String category; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DatabaseVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DatabaseVO.java index b56d0c8..1d25617 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DatabaseVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DatabaseVO.java @@ -2,22 +2,16 @@ package com.xcs.wx.domain.vo; import lombok.Data; -/** - * DatabaseVO - * - * @author 林雷 - * @date 2024年6月28日11:08:45 - */ +//DatabaseVO + @Data public class DatabaseVO { - /** - * 文件路径 - */ + //文件路径 + private String filePath; - /** - * 文件大小 - */ + //文件大小 + private String fileSize; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DecryptVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DecryptVO.java index 72a2e1b..ac11899 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DecryptVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DecryptVO.java @@ -3,33 +3,25 @@ package com.xcs.wx.domain.vo; import lombok.Builder; import lombok.Data; -/** - * DecryptVO - * - * @author xcs - * @date 2023年12月21日 18时13分 - **/ +//DecryptVO + @Data @Builder public class DecryptVO { - /** - * 文件名称 - */ + //文件名称 + private String fileName; - /** - * 文件大小 - */ + //文件大小 + private String fileSize; - /** - * 当前进度 - */ + //当前进度 + private int currentProgress; - /** - * 总数量 - */ + //总数量 + private int total; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportChatRoomVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportChatRoomVO.java index b642168..b5a647d 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportChatRoomVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportChatRoomVO.java @@ -7,67 +7,55 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; import lombok.Data; -/** - * ExportChatRoomVO - * - * @author xcs - * @date 2024年01月08日 16时10分 - **/ +// ExportChatRoomVO + @Data @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER) public class ExportChatRoomVO { - /** - * 群号 - */ + //群号 + @ColumnWidth(25) @ExcelProperty("群号") private String chatRoomName; - /** - * 群聊名称 - */ + //群聊名称 + @ColumnWidth(25) @ExcelProperty("群聊名称") private String chatRoomTitle; - /** - * 备注 - */ + //备注 + @ColumnWidth(25) @ExcelProperty("备注") private String selfDisplayName; - /** - * 创建人 - */ + //创建人 + @ColumnWidth(25) @ExcelProperty("创建人") private String createBy; - /** - * 群聊是否已经解散 - */ + //群聊是否已经解散 + @ColumnWidth(25) @ExcelProperty("群聊是否已经解散") private Boolean dissolution; - /** - * 是否为企业微信群 - */ + //是否为企业微信群 + @ColumnWidth(25) @ExcelProperty("是否为企业微信群") private Boolean enterprise; - /** - * 群聊数据 - */ + //群聊数据 + @ExcelIgnore private byte[] roomData; - /** - * 群聊人数 - */ + //群聊人数 + @ColumnWidth(25) @ExcelProperty("群聊人数") private Integer memberCount; diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportContactVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportContactVO.java index eb9c47c..17380c0 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportContactVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportContactVO.java @@ -6,54 +6,44 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; import lombok.Data; -/** - * ExportContactVO - * - * @author xcs - * @date 2023年12月22日 14时43分 - **/ +// ExportContactVO + @Data @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER) public class ExportContactVO { - /** - * 用户名 - */ + //用户名 + @ColumnWidth(25) @ExcelProperty("微信Id") private String userName; - /** - * 别名 - */ + // 别名 + @ColumnWidth(25) @ExcelProperty("微信号") private String alias; - /** - * 备注 - */ + //备注 + @ColumnWidth(25) @ExcelProperty("备注") private String remark; - /** - * 昵称 - */ + // 昵称 + @ColumnWidth(30) @ExcelProperty("昵称") private String nickName; - /** - * 描述 - */ + //描述 + @ColumnWidth(25) @ExcelProperty("描述") private String describe; - /** - * 标签Id - */ + //标签Id + @ColumnWidth(20) @ExcelProperty("标签Id") private String labelIdList; diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportMsgVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportMsgVO.java index 99dbe7a..2b7244a 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportMsgVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportMsgVO.java @@ -6,61 +6,50 @@ import com.alibaba.excel.annotation.write.style.ContentStyle; import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; import lombok.Data; -/** - * ExportMsgVO - * - * @author xcs - * @date 2024年01月25日 16时16分 - **/ +//ExportMsgVO + @Data @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER) public class ExportMsgVO { - /** - * 消息服务器 ID - */ + //消息服务器 ID + @ColumnWidth(25) @ExcelProperty("消息Id") private String msgSvrId; - /** - * 聊天人Id - */ + //聊天人Id + @ColumnWidth(25) @ExcelProperty("聊天人Id") private String wxId; - /** - * 消息类型 - */ + //消息类型 + @ColumnWidth(10) @ExcelProperty("类型") private Integer type; - /** - * 消息子类型 - */ + //消息子类型 + @ColumnWidth(10) @ExcelProperty("子类型") private Integer subType; - /** - * 是否为发送者 - */ + // 是否为发送者 + @ColumnWidth(15) @ExcelProperty("是否发送者") private Integer isSender; - /** - * 消息创建时间 - */ + //消息创建时间 + @ColumnWidth(25) @ExcelProperty("创建时间") private String strCreateTime; - /** - * 消息内容字符串 - */ + //消息内容字符串 + @ColumnWidth(80) @ExcelProperty("消息内容") private String strContent; diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsLocationVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsLocationVO.java index 55c7abe..f97cac6 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsLocationVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsLocationVO.java @@ -2,37 +2,28 @@ package com.xcs.wx.domain.vo; import lombok.Data; -/** - * FeedsLocationVO - * - * @author xcs - * @date 2024年01月04日 14时25分 - **/ +//FeedsLocationVO + @Data public class FeedsLocationVO { - /** - * poiClassifyId - */ + //poiClassifyId + private String poiClassifyId; - /** - * poiName - */ + //poiName + private String poiName; - /** - * poiAddress - */ + //poiAddress + private String poiAddress; - /** - * poiClassifyType - */ + //poiClassifyType + private Integer poiClassifyType; - /** - * city - */ + //city + private String city; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsMediaVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsMediaVO.java index 28d5e96..4d752cd 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsMediaVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsMediaVO.java @@ -2,22 +2,16 @@ package com.xcs.wx.domain.vo; import lombok.Data; -/** - * FeedsMediaVO - * - * @author xcs - * @date 2024年01月04日 14时25分 - **/ +//FeedsMediaVO + @Data public class FeedsMediaVO { - /** - * 大图Url - */ + //大图Url + private String url; - /** - * 缩略图Url - */ + // 缩略图Url + private String thumb; } diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsVO.java index d950829..541c347 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsVO.java @@ -5,94 +5,73 @@ import lombok.Data; import java.util.List; -/** - * FeedsVO - * - * @author xcs - * @date 2024年01月03日 16时41分 - **/ +//FeedsVO + @Data public class FeedsVO { - /** - * 动态的唯一标识ID。 - */ + //动态的唯一标识ID。 + private Long feedId; - /** - * 创建时间,存储为整数形式。 - */ + //创建时间,存储为整数形式。 + @JsonIgnore private Integer createTime; - /** - * 创建时间 - */ + //创建时间 + private String strCreateTime; - /** - * 故障ID,用于记录相关故障信息。 - */ + //故障ID,用于记录相关故障信息。 + private Integer faultId; - /** - * 动态的类型。 - */ + //动态的类型。 + private Integer type; - /** - * 发布用户的用户名。 - */ + //发布用户的用户名。 + private String userName; - /** - * 发布用户的用户名。 - */ + //发布用户的用户名。 + private String nickName; - /** - * 动态的状态。 - */ + //动态的状态。 + private Integer status; - /** - * 扩展标志,用于存储额外信息。 - */ + //扩展标志,用于存储额外信息。 + private Integer extFlag; - /** - * 隐私标志,指示动态的隐私级别。 - */ + //隐私标志,指示动态的隐私级别。 + private Integer privFlag; - /** - * 字符串ID,可能用于关联其他数据。 - */ + //字符串ID,可能用于关联其他数据。 + private String stringId; - /** - * 动态的内容文本。 - */ + //动态的内容文本。 + @JsonIgnore private String content; - /** - * 内容描述 - */ + //内容描述 + private String contentDesc; - /** - * 媒体内容 - */ + //媒体内容 + private List medias; - /** - * 位置 - */ + // 位置 + private FeedsLocationVO location; - /** - * 联系人头像 - */ + //联系人头像 private String headImgUrl; } -- 2.34.1 From 64a6e166dd38aa5d7f5f6c6e8cd7e1efcfe7c5c6 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 23:06:37 +0800 Subject: [PATCH 09/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xcs/wx/domain/bo/UserBO.java | 7 ++---- .../java/com/xcs/wx/domain/bo/VoipMsgBO.java | 22 +++++++++---------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java index 0440342..a4f71e8 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java @@ -3,11 +3,8 @@ package com.xcs.wx.domain.bo; import lombok.Builder; import lombok.Data; -/** - * UserBO - * - * @author xcs - */ +// UserBO + @Data @Builder public class UserBO { diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java index d12f85d..b7902da 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java @@ -8,30 +8,30 @@ import lombok.Data; @Data -// 使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法, -// 以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法, +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 @JsonIgnoreProperties(ignoreUnknown = true) -// 这个注解告诉Jackson在进行JSON反序列化时,忽略那些在目标对象中不存在对应属性的未知属性, -// 防止因为额外的、不认识的JSON字段而抛出异常 +//这个注解告诉Jackson在进行JSON反序列化时,忽略那些在目标对象中不存在对应属性的未知属性, +//防止因为额外的、不认识的JSON字段而抛出异常 @JacksonXmlRootElement(localName = "voipmsg") -// 用于指定在将对象序列化为XML时,这个类对应的XML根元素的名称为"voipmsg" +//用于指定在将对象序列化为XML时,这个类对应的XML根元素的名称为"voipmsg" public class VoipMsgBO { @JacksonXmlProperty(localName = "VoIPBubbleMsg") private VoIPBubbleMsg voIPBubbleMsg; - // 使用JacksonXmlProperty注解指定这个字段在序列化为XML时对应的元素名称为"VoIPBubbleMsg", - // 它的类型是内部定义的VoIPBubbleMsg类,用于封装相关的数据 + //使用JacksonXmlProperty注解指定这个字段在序列化为XML时对应的元素名称为"VoIPBubbleMsg", + //它的类型是内部定义的VoIPBubbleMsg类,用于封装相关的数据 @Data @JsonIgnoreProperties(ignoreUnknown = true) public static class VoIPBubbleMsg { - // 定义了一个内部静态类,同样使用了Data注解和JsonIgnoreProperties注解,具备和外部类类似的功能 + //定义了一个内部静态类,同样使用了Data注解和JsonIgnoreProperties注解,具备和外部类类似的功能 @JacksonXmlCData @JacksonXmlProperty(localName = "msg") private String msg; - // @JacksonXmlCData注解表示这个字段在序列化为XML时,其内容会被包裹在中, - // 通常用于包含可能包含特殊XML字符(如<、>等)的数据,防止XML解析出错。 - // @JacksonXmlProperty注解指定该字段在XML中的元素名称为"msg",它用于存储一个字符串类型的消息内容 + //@JacksonXmlCData注解表示这个字段在序列化为XML时,其内容会被包裹在中, + //通常用于包含可能包含特殊XML字符(如<、>等)的数据,防止XML解析出错。 + //@JacksonXmlProperty注解指定该字段在XML中的元素名称为"msg",它用于存储一个字符串类型的消息内容 } } -- 2.34.1 From 0c3c0271a0e70a15d56e97896f90eda88bdf2612 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 23:07:52 +0800 Subject: [PATCH 10/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java index 04371f2..767e083 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java @@ -7,12 +7,12 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = true) public class ChatRoomDTO extends PageDTO { - //初始化群聊标题 + //初始化群聊标题... private String chatRoomTitle; - //初始化群昵称 + //初始化群昵称... private String selfDisplayName; - //初始化创建人 + //初始化创建人... private String createBy; } -- 2.34.1 From 2743abb2aeebbd1966f32a93377eca3f7319d31a Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 23:09:13 +0800 Subject: [PATCH 11/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xcs/wx/domain/bo/UserBO.java | 8 ++++---- .../src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java index a4f71e8..625cd7b 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java @@ -12,16 +12,16 @@ public class UserBO { //初始化文件目录... private String basePath; - //初始化微信id + //初始化微信id.. private String wxId; - //初始化昵称 + //初始化昵称.. private String nickname; - //初始化版本号 + //初始化版本号.. private String version; - //初始化账号 + //初始化账号.. private String account; //初始化手机号 diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java index b7902da..0975209 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/VoipMsgBO.java @@ -8,10 +8,10 @@ import lombok.Data; @Data -//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法, +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 //以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 @JsonIgnoreProperties(ignoreUnknown = true) -//这个注解告诉Jackson在进行JSON反序列化时,忽略那些在目标对象中不存在对应属性的未知属性, +//这个注解告诉Jackson在进行JSON反序列化时,忽略那些在目标对象中不存在对应属性的未知属性 //防止因为额外的、不认识的JSON字段而抛出异常 @JacksonXmlRootElement(localName = "voipmsg") //用于指定在将对象序列化为XML时,这个类对应的XML根元素的名称为"voipmsg" @@ -19,7 +19,7 @@ public class VoipMsgBO { @JacksonXmlProperty(localName = "VoIPBubbleMsg") private VoIPBubbleMsg voIPBubbleMsg; - //使用JacksonXmlProperty注解指定这个字段在序列化为XML时对应的元素名称为"VoIPBubbleMsg", + //使用JacksonXmlProperty注解指定这个字段在序列化为XML时对应的元素名称为"VoIPBubbleMsg" //它的类型是内部定义的VoIPBubbleMsg类,用于封装相关的数据 @Data @@ -30,8 +30,8 @@ public class VoipMsgBO { @JacksonXmlCData @JacksonXmlProperty(localName = "msg") private String msg; - //@JacksonXmlCData注解表示这个字段在序列化为XML时,其内容会被包裹在中, - //通常用于包含可能包含特殊XML字符(如<、>等)的数据,防止XML解析出错。 + //@JacksonXmlCData注解表示这个字段在序列化为XML时,其内容会被包裹在中 + //通常用于包含可能包含特殊XML字符(如<、>等)的数据,防止XML解析出错 //@JacksonXmlProperty注解指定该字段在XML中的元素名称为"msg",它用于存储一个字符串类型的消息内容 } } -- 2.34.1 From f780f2eae0bd063daf663e8b9e74083b5b2abbde Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 23:12:36 +0800 Subject: [PATCH 12/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java index 767e083..75e4d6b 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ChatRoomDTO.java @@ -4,7 +4,10 @@ import lombok.Data; import lombok.EqualsAndHashCode; @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 @EqualsAndHashCode(callSuper = true) +//Lombok 提供的便捷工具,用于自动帮你生成equals和hashCode方法的实现代码,减少手动编写这些相对样板化代码的工作量 public class ChatRoomDTO extends PageDTO { //初始化群聊标题... -- 2.34.1 From 0557d48a8658f0e2abdb0e5db2630b793663a81e Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 23:19:33 +0800 Subject: [PATCH 13/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xcs/wx/domain/dto/ContactDTO.java | 3 +++ .../src/main/java/com/xcs/wx/domain/dto/DecryptDTO.java | 2 ++ .../src/main/java/com/xcs/wx/domain/dto/FeedsDTO.java | 3 +++ 3 files changed, 8 insertions(+) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ContactDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ContactDTO.java index 9520a59..ee63a7a 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ContactDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/ContactDTO.java @@ -3,7 +3,10 @@ package com.xcs.wx.domain.dto; import lombok.Data; import lombok.EqualsAndHashCode; @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 @EqualsAndHashCode(callSuper = true) +//Lombok 提供的便捷工具,用于自动帮你生成equals和hashCode方法的实现代码,减少手动编写这些相对样板化代码的工作量 public class ContactDTO extends PageDTO { //初始化备注 diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/DecryptDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/DecryptDTO.java index fc46bee..7925d67 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/DecryptDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/DecryptDTO.java @@ -4,6 +4,8 @@ import lombok.Data; @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class DecryptDTO { //初始化pid diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/FeedsDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/FeedsDTO.java index 10df7e1..3b6ac78 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/FeedsDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/FeedsDTO.java @@ -5,7 +5,10 @@ import lombok.EqualsAndHashCode; @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 @EqualsAndHashCode(callSuper = true) +//Lombok 提供的便捷工具,用于自动帮你生成equals和hashCode方法的实现代码,减少手动编写这些相对样板化代码的工作量 public class FeedsDTO extends PageDTO { //初始化用户名 -- 2.34.1 From 6e51f0d415b6412e5eb7bd185f99923104432db8 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Sun, 15 Dec 2024 23:25:19 +0800 Subject: [PATCH 14/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java | 3 +++ .../src/main/java/com/xcs/wx/domain/vo/CardLinkVO.java | 2 ++ 2 files changed, 5 insertions(+) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java index 625cd7b..34ee5f9 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/bo/UserBO.java @@ -6,7 +6,10 @@ import lombok.Data; // UserBO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 @Builder +//自动生成一种被称为 “建造者(Builder)” 模式的代码实现 public class UserBO { //初始化文件目录... diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CardLinkVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CardLinkVO.java index d7e6d08..6da0563 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CardLinkVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CardLinkVO.java @@ -5,6 +5,8 @@ import lombok.Data; // CardLinkVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class CardLinkVO { //title -- 2.34.1 From f6b004f59ab7c7aa2d23154357c42c1e30954b56 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Mon, 16 Dec 2024 10:04:59 +0800 Subject: [PATCH 15/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java b/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java index d4c29aa..25df9ed 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java @@ -7,7 +7,10 @@ package com.xcs.wx.protobuf; * @date 2024年6月27日14:55:41 */ @SuppressWarnings("all") +// 定义一个名为ChatRoomProto的final类,意味着它不能被继承,通常用于封装一些与ChatRoom相关的协议相关逻辑 public final class ChatRoomProto { + // 将构造函数设为私有,这样外部类就无法通过构造函数来实例化ChatRoomProto类, + // 符合工具类或者只希望内部使用的类的设计模式,防止外部随意创建该类的实例 private ChatRoomProto() { } -- 2.34.1 From fc0da4d643865995192fc184d0acc2c59a1d13f3 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Mon, 16 Dec 2024 10:05:25 +0800 Subject: [PATCH 16/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java b/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java index 25df9ed..2005dd6 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java @@ -13,7 +13,9 @@ public final class ChatRoomProto { // 符合工具类或者只希望内部使用的类的设计模式,防止外部随意创建该类的实例 private ChatRoomProto() { } - + // 用于向Google Protobuf的ExtensionRegistryLite类型的注册器中注册所有扩展, + // 不过当前方法体为空,可能具体的注册逻辑需要在子类或者外部调用时实现, + // 这里只是定义了一个注册的入口方法形式 public static void registerAllExtensions( com.google.protobuf.ExtensionRegistryLite registry) { } -- 2.34.1 From 17eb15e5f5b3db7e42eda6ef753b51d5be93f425 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Mon, 16 Dec 2024 11:32:40 +0800 Subject: [PATCH 17/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xcs/wx/protobuf/ChatRoomProto.java | 363 +++++++++++------- 1 file changed, 221 insertions(+), 142 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java b/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java index 2005dd6..18d42a5 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java @@ -19,125 +19,120 @@ public final class ChatRoomProto { public static void registerAllExtensions( com.google.protobuf.ExtensionRegistryLite registry) { } - + // 重载的registerAllExtensions方法,接收的参数是Google Protobuf的标准ExtensionRegistry类型的注册器, + // 方法内部将其转换为ExtensionRegistryLite类型后调用上面那个registerAllExtensions方法, + // 实现了对不同类型注册器的兼容处理,方便在不同场景下进行扩展注册操作 public static void registerAllExtensions( com.google.protobuf.ExtensionRegistry registry) { registerAllExtensions( (com.google.protobuf.ExtensionRegistryLite) registry); } - + // 定义一个接口ChatRoomOrBuilder,它继承自Google Protobuf的MessageOrBuilder接口, + // 这个接口用于规定实现类需要提供获取ChatRoom相关属性以及对应的构建者(Builder)风格访问方式的方法, + // 方便后续在处理消息对象时既能获取属性值,又能通过构建者模式进行灵活操作(比如构建、修改对象等) public interface ChatRoomOrBuilder extends // @@protoc_insertion_point(interface_extends:ChatRoom) com.google.protobuf.MessageOrBuilder { - - /** - * repeated .Member members = 1; - */ + // @@protoc_insertion_point(interface_extends:ChatRoom) 这可能是用于代码生成工具插入相关代码的标识点, + // 一般在Protobuf相关代码生成过程中会依据这些标识来添加额外的代码逻辑,此处暂不影响代码功能理解 java.util.List getMembersList(); - /** - * repeated .Member members = 1; - */ + // 根据给定的索引获取成员列表中的具体某个成员对象(Member类型), + // 通过索引可以精确访问成员列表中的单个元素 Member getMembers(int index); - /** - * repeated .Member members = 1; - */ + // 获取成员列表中成员的数量,用于判断成员列表的大小,方便在遍历等操作时确定循环次数等 int getMembersCount(); - /** - * repeated .Member members = 1; - */ + // 获取成员列表(成员类型为可以是Member或者实现了MemberOrBuilder接口的对象), + // 返回一个包含所有成员的Java List集合,这种灵活性方便在不同场景下(比如只需要读取属性或者需要构建操作时)访问成员数据 java.util.List getMembersOrBuilderList(); - /** - * repeated .Member members = 1; - */ + // 根据给定的索引获取成员列表中的具体某个成员对象(可以是Member或者实现了MemberOrBuilder接口的对象), + // 通过索引和这种灵活的类型返回能更好地适配不同使用场景下对单个成员的访问需求 MemberOrBuilder getMembersOrBuilder( int index); - /** - * int32 field2 = 2; - * - * @return The field2. - */ + // 获取名为field2的整型属性值,对应Protobuf中的一个int32类型的字段定义, + // 该方法用于向外提供访问这个属性的接口,返回具体的整数值 int getField2(); - /** - * int32 field3 = 3; - * - * @return The field3. - */ + // 获取名为field3的整型属性值,同样对应Protobuf中的int32类型字段, + // 返回对应整数值,方便在其他代码中获取和使用这个属性的数据 int getField3(); - /** - * int32 field4 = 4; - * - * @return The field4. - */ + // 获取名为field4的整型属性值,对应Protobuf中的int32类型字段定义, + // 为外部代码提供获取该属性值的途径,返回相应的整数值 int getField4(); - /** - * int32 roomCapacity = 5; - * - * @return The roomCapacity. - */ + // 获取名为roomCapacity的整型属性值,对应Protobuf中的int32类型字段, + // 返回这个属性对应的整数值,用于在业务逻辑中获取房间容量等相关信息 int getRoomCapacity(); - /** - * int32 field6 = 6; - * - * @return The field6. - */ + // 获取名为field6的整型属性值,对应Protobuf中的int32类型字段定义, + // 提供对外获取该属性值的方法,返回对应的整数值 int getField6(); - /** - * int64 field7 = 7; - * - * @return The field7. - */ + // 获取名为field7的长整型属性值,对应Protobuf中的int64类型字段, + // 返回这个长整型属性对应的具体数值,便于在代码中使用该属性的数据 long getField7(); - /** - * int64 field8 = 8; - * - * @return The field8. - */ + // 获取名为field8的长整型属性值,对应Protobuf中的int64类型字段定义, + // 通过此方法可以获取到该属性的具体长整型数值,用于业务逻辑等相关操作 long getField8(); } - /** - * Protobuf type {@code ChatRoom} - */ + // 定义一个名为ChatRoom的内部静态final类,它继承自Google Protobuf的GeneratedMessageV3类, + // 同时实现了上面定义的ChatRoomOrBuilder接口,意味着这个类既具备GeneratedMessageV3的基础功能, + // 又满足了ChatRoomOrBuilder接口所规定的属性访问等相关方法要求,用于实际表示和处理ChatRoom相关的消息对象 public static final class ChatRoom extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:ChatRoom) + // @@protoc_insertion_point(message_implements:ChatRoom) 同样可能是代码生成工具插入代码的标识点 ChatRoomOrBuilder { + // 定义一个序列化版本号,用于在对象序列化和反序列化过程中确保版本兼容性, + // 这里初始化为0L,具体值可能根据实际情况在后续调整,只要保持一致就能正确处理序列化相关操作 private static final long serialVersionUID = 0L; - // Use ChatRoom.newBuilder() to construct. + // 私有构造函数,接收一个GeneratedMessageV3的构建者(Builder)对象作为参数, + // 通过调用父类的构造函数来初始化当前ChatRoom对象, + // 遵循了构建者模式下通过构建者来创建对象的方式,外部一般不会直接调用这个构造函数, + // 而是通过类提供的其他构建方式(如newBuilder方法)来创建实例 private ChatRoom(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); + // 另一个私有构造函数,用于在内部创建ChatRoom对象时初始化成员变量, + // 将成员列表初始化为一个空的List集合,符合初始状态下没有成员的逻辑, + // 外部同样无法直接调用这个构造函数来创建对象 } private ChatRoom() { members_ = java.util.Collections.emptyList(); - } - + // 重写newInstance方法,用于创建一个新的ChatRoom对象实例, + // 这里通过返回一个新的ChatRoom对象来实现创建逻辑, + // 并且通过参数unused来接收可能的未使用私有参数(在当前代码中没有实际用到这个参数), + // 一般是遵循GeneratedMessageV3类的相关要求来实现对象创建的规范方法 + } + // 重写newInstance方法,用于创建一个新的ChatRoom对象实例, + // 这里通过返回一个新的ChatRoom对象来实现创建逻辑, + // 并且通过参数unused来接收可能的未使用私有参数(在当前代码中没有实际用到这个参数), + // 一般是遵循GeneratedMessageV3类的相关要求来实现对象创建的规范方法 @Override @SuppressWarnings({"unused"}) protected Object newInstance( UnusedPrivateParameter unused) { return new ChatRoom(); } - + // 获取ChatRoom类对应的Protobuf描述符(Descriptor), + // 这个描述符包含了ChatRoom类在Protobuf中的类型定义、字段信息等相关元数据, + // 通过调用内部静态的描述符来获取,方便后续在处理Protobuf相关逻辑(如序列化、反序列化等)时使用 public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return ChatRoomProto.internal_static_ChatRoom_descriptor; } - + // 获取字段访问器表(FieldAccessorTable),用于在运行时方便地访问类中的各个字段, + // 通过调用内部静态的字段访问器表对象的相关方法来确保字段访问器针对ChatRoom类及其构建者(Builder)类正确初始化, + // 保证可以准确、高效地访问类中的各个属性字段 @Override protected FieldAccessorTable internalGetFieldAccessorTable() { @@ -145,11 +140,15 @@ public final class ChatRoomProto { .ensureFieldAccessorsInitialized( ChatRoom.class, Builder.class); } - + // 定义成员列表字段对应的Protobuf字段编号为1,用于在Protobuf序列化、反序列化以及相关操作中标识这个字段, + // 方便根据编号来准确处理成员列表这个属性对应的信息传递和操作 public static final int MEMBERS_FIELD_NUMBER = 1; @SuppressWarnings("serial") + // 定义一个成员列表变量,用于存储ChatRoom中的成员信息,初始化为一个空的List集合, + // 类型为Member,后续可以通过相关方法对这个列表进行添加、获取等操作来管理成员数据 private java.util.List members_; - + // 重写获取成员列表的方法,直接返回存储成员信息的列表变量members_, + // 对外提供获取成员列表的接口,使得外部代码可以获取到ChatRoom对象中包含的所有成员信息 /** * repeated .Member members = 1; */ @@ -158,56 +157,59 @@ public final class ChatRoomProto { return members_; } - /** - * repeated .Member members = 1; - */ + // 重写获取成员列表(可包含Member或者MemberOrBuilder类型)的方法, + // 同样返回存储成员信息的列表变量members_,提供一种灵活的获取成员数据的方式, + // 满足不同场景下对成员列表访问的需求 @Override public java.util.List getMembersOrBuilderList() { return members_; } - /** - * repeated .Member members = 1; - */ + // 重写获取成员数量的方法,通过返回成员列表的大小(即成员个数)来告知外部代码成员列表中包含成员的数量, + // 方便在遍历、判断等操作中使用这个数量信息 @Override public int getMembersCount() { return members_.size(); } - /** - * repeated .Member members = 1; - */ + // 重写根据索引获取具体成员的方法,通过从成员列表中获取对应索引位置的成员对象并返回, + // 使得外部代码可以精确访问成员列表中的单个成员信息 @Override public Member getMembers(int index) { return members_.get(index); } - /** - * repeated .Member members = 1; - */ + // 重写根据索引获取具体成员(可以是Member或者MemberOrBuilder类型)的方法, + // 同样从成员列表中获取对应索引位置的成员对象并返回, + // 提供一种灵活的按索引访问成员的方式,适应不同场景需求 @Override public MemberOrBuilder getMembersOrBuilder( int index) { return members_.get(index); } - + // 定义名为field2的字段对应的Protobuf字段编号为2,用于在Protobuf相关操作中标识这个字段, + // 便于准确处理该字段的数据传递、序列化、反序列化等操作 public static final int FIELD2_FIELD_NUMBER = 2; + // 定义一个整型变量用于存储field2字段的值,初始化为0, + // 后续可以通过相关方法来获取和修改这个变量的值,以反映ChatRoom对象中这个属性的具体情况 private int field2_ = 0; - /** - * int32 field2 = 2; - * - * @return The field2. - */ + // 重写获取field2字段值的方法,直接返回存储该字段值的变量field2_, + // 对外提供获取这个属性值的接口,方便在业务逻辑等代码中使用该属性的数据 @Override public int getField2() { return field2_; } - + // 定义名为field3的字段对应的Protobuf字段编号为3,用于在Protobuf相关操作(如序列化、反序列化等)中标识这个字段, + // 便于准确处理该字段的数据传递和操作 public static final int FIELD3_FIELD_NUMBER = 3; + // 定义一个整型变量用于存储field3字段的值,初始化为0,后续可以通过相关方法来获取和修改这个变量的值, +// 以反映ChatRoom对象中这个属性的具体情况 private int field3_ = 0; - +// 重写获取field3字段值的方法,直接返回存储该字段值的变量field3_, +// 对外提供获取这个属性值的接口,方便在业务逻辑等代码中使用该属性的数据 +// 此方法遵循了接口中定义的规范,用于满足ChatRoomOrBuilder接口要求的属性访问方式 /** * int32 field3 = 3; * @@ -217,74 +219,80 @@ public final class ChatRoomProto { public int getField3() { return field3_; } - + // 定义名为field4的字段对应的Protobuf字段编号为4,用于在Protobuf相关操作中标识这个字段, +// 便于准确处理该字段的数据传递、序列化、反序列化等操作 public static final int FIELD4_FIELD_NUMBER = 4; + // 定义一个整型变量用于存储field4字段的值,初始化为0, +// 后续可通过相关方法获取和修改其值来体现ChatRoom对象中该属性的具体状态 private int field4_ = 0; - /** - * int32 field4 = 4; - * - * @return The field4. - */ + // 重写获取field4字段值的方法,直接返回存储该字段值的变量field4_, +// 对外提供获取这个属性值的接口,方便在业务逻辑等代码中使用该属性的数据 +// 符合接口约定的属性访问方式,便于外部代码获取该属性内容 @Override public int getField4() { return field4_; } - + // 定义名为roomCapacity的字段对应的Protobuf字段编号为5,用于在Protobuf相关操作中标识这个字段, +// 方便准确处理该字段的数据相关事宜,比如在序列化、反序列化以及消息传递过程中准确对应相应的数据 public static final int ROOMCAPACITY_FIELD_NUMBER = 5; + // 定义一个整型变量用于存储roomCapacity字段的值,初始化为0, +// 其值可根据业务逻辑进行改变,通过相关方法可对外提供该属性值的访问接口 private int roomCapacity_ = 0; - /** - * int32 roomCapacity = 5; - * - * @return The roomCapacity. - */ + // 重写获取roomCapacity字段值的方法,直接返回存储该字段值的变量roomCapacity_, +// 对外提供获取这个属性值的接口,便于在其他代码中获取房间容量相关信息并进行相应处理 +// 这满足了接口中对该属性访问方法的定义要求 @Override public int getRoomCapacity() { return roomCapacity_; } - + // 定义名为field6的字段对应的Protobuf字段编号为6,用于在Protobuf相关操作中标识这个字段, +// 以便准确进行数据处理,例如在序列化和反序列化时能正确对应到该字段的数据内容 public static final int FIELD6_FIELD_NUMBER = 6; + // 定义一个整型变量用于存储field6字段的值,初始化为0, +// 后续可通过相应方法来操作这个变量的值,满足业务逻辑中对该属性的处理需求 private int field6_ = 0; - - /** - * int32 field6 = 6; - * - * @return The field6. - */ + // 重写获取field6字段值的方法,直接返回存储该字段值的变量field6_, +// 对外提供获取这个属性值的接口,方便在业务逻辑代码中使用该属性的数据, +// 符合类实现的ChatRoomOrBuilder接口对于属性访问的规范要求 @Override public int getField6() { return field6_; } - + // 定义名为field7的字段对应的Protobuf字段编号为7,用于在Protobuf相关操作中标识这个字段, +// 比如在序列化、反序列化以及消息处理过程中准确识别和处理该字段对应的长整型数据 public static final int FIELD7_FIELD_NUMBER = 7; + // 定义一个长整型变量用于存储field7字段的值,初始化为0L, +// 其值可根据业务逻辑变化,并且通过相关方法能对外提供该属性值的访问途径 private long field7_ = 0L; - - /** - * int64 field7 = 7; - * - * @return The field7. - */ + // 重写获取field7字段值的方法,直接返回存储该字段值的变量field7_, +// 对外提供获取这个属性值的接口,方便在代码中获取和使用该长整型属性的数据, +// 满足了接口定义的属性访问需求,便于外部代码与之交互 @Override public long getField7() { return field7_; } - + // 定义名为field8的字段对应的Protobuf字段编号为8,用于在Protobuf相关操作中标识这个字段, +// 确保在数据处理环节(如序列化、反序列化、消息传递等)能准确对应到该字段的数据信息 public static final int FIELD8_FIELD_NUMBER = 8; + // 定义一个长整型变量用于存储field8字段的值,初始化为0L, +// 后续可依据业务逻辑对其值进行调整,同时通过相关方法可对外提供该属性值的访问接口 private long field8_ = 0L; - /** - * int64 field8 = 8; - * - * @return The field8. - */ + // 重写获取field8字段值的方法,直接返回存储该字段值的变量field8_, +// 对外提供获取这个属性值的接口,方便在业务逻辑等代码中使用该长整型属性的数据, +// 遵循了类所实现接口中对属性访问方式的规定 @Override public long getField8() { return field8_; } - + // 定义一个字节类型的变量,用于缓存对象是否已初始化的状态,初始值为 -1,表示尚未确定初始化状态 private byte memoizedIsInitialized = -1; - + // 重写isInitialized方法,用于判断当前ChatRoom对象是否已初始化。 +// 首先获取缓存的初始化状态值,如果为1表示已初始化则直接返回true,如果为0表示未初始化则返回false。 +// 如果缓存值为初始的 -1,则将缓存值设为1(表示已初始化)并返回true, +// 这种缓存机制可以避免多次重复判断初始化状态,提高效率,同时对外提供了统一的对象初始化状态查询接口 @Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; @@ -294,7 +302,10 @@ public final class ChatRoomProto { memoizedIsInitialized = 1; return true; } - + // 重写writeTo方法,用于将ChatRoom对象的内容写入到给定的CodedOutputStream中,实现序列化功能。 +// 它会遍历成员列表(members_),将每个成员对象通过writeMessage方法写入输出流(按照Protobuf的格式要求), +// 然后对于每个非零值的基本类型字段(如field2_、field3_等),根据其对应的字段编号分别调用相应的write方法(如writeInt32、writeInt64等)将数据写入输出流, +// 最后将未知字段(通过getUnknownFields方法获取)也写入输出流,确保整个对象完整地序列化到输出流中,方便进行数据传输或存储等操作 @Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { @@ -324,7 +335,13 @@ public final class ChatRoomProto { } getUnknownFields().writeTo(output); } - + // 重写getSerializedSize方法,用于计算ChatRoom对象序列化后的大小(字节数)。 +// 首先尝试获取已缓存的大小值(memoizedSize),如果不为 -1则直接返回该缓存值。 +// 如果缓存值为 -1,表示尚未计算过大小,则开始计算。 +// 计算过程中,先将总大小初始化为0,然后遍历成员列表,通过computeMessageSize方法计算每个成员对象序列化后的大小并累加到总大小中, +// 接着对于每个非零值的基本类型字段,根据其字段编号调用相应的computeSize方法(如computeInt32Size、computeInt64Size等)计算其序列化后的大小并累加到总大小中, +// 最后再加上未知字段(通过getUnknownFields方法获取)序列化后的大小,计算完成后将总大小缓存到memoizedSize变量中,并返回该总大小值, +// 这样在多次需要获取序列化大小时可以避免重复计算,提高效率 @Override public int getSerializedSize() { int size = memoizedSize; @@ -367,7 +384,12 @@ public final class ChatRoomProto { memoizedSize = size; return size; } - + // 重写equals方法,用于比较当前ChatRoom对象与另一个对象是否相等。 +// 首先判断传入的对象是否就是当前对象(即内存地址相同),如果是则直接返回true。 +// 如果传入的对象不是ChatRoom类型,就调用父类的equals方法进行比较(可能是基于父类定义的相等规则来判断)。 +// 如果传入的对象是ChatRoom类型,则依次比较各个重要属性,包括成员列表(通过getMembersList方法获取)、各个整型和长整型字段(如field2、field3等)以及未知字段(通过getUnknownFields方法获取), +// 只要有一个属性不相等就返回false,只有所有属性都相等时才返回true, +// 这样定义了符合业务逻辑的ChatRoom对象相等性判断规则,用于在集合操作、对象比较等场景中准确判断两个ChatRoom对象是否相等 @Override public boolean equals(final Object obj) { if (obj == this) { @@ -397,6 +419,14 @@ public final class ChatRoomProto { if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } + // 重写hashCode方法,用于为ChatRoom对象生成一个哈希码值。 +// 如果已经计算并缓存了哈希码值(memoizedHashCode不为0),则直接返回缓存的哈希码值。 +// 如果尚未计算哈希码,则按照一定的算法进行计算。首先初始化一个基础哈希值为41, +// 然后将ChatRoom类对应的描述符(通过getDescriptor方法获取)的哈希码值参与计算, +// 接着对于成员列表,如果成员数量大于0,则将成员列表的字段编号(MEMBERS_FIELD_NUMBER)以及成员列表的哈希码值参与哈希码计算, +// 之后依次将各个基本类型字段(如field2、field3等)的字段编号以及字段值按照特定算法参与哈希码计算(对于长整型字段通过hashLong方法进行处理), +// 最后再将未知字段(通过getUnknownFields方法获取)的哈希码值参与计算,计算完成后将得到的哈希码值缓存到memoizedHashCode变量中,并返回该哈希码值, +// 生成的哈希码值用于在基于哈希的数据结构(如HashMap、HashSet等)中准确地定位和比较ChatRoom对象 @Override public int hashCode() { @@ -429,51 +459,70 @@ public final class ChatRoomProto { memoizedHashCode = hash; return hash; } - + // 提供一个静态方法parseFrom,用于从给定的ByteBuffer类型的数据中解析出ChatRoom对象, +// 实际的解析工作委托给了内部的PARSER对象的parseFrom方法来完成,方便从字节缓冲区数据中恢复出ChatRoom对象实例, +// 常用于从网络传输、文件读取等获取到字节数据后还原对象的场景 public static ChatRoom parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - + // 提供一个静态方法parseFrom,用于从给定的ByteBuffer类型的数据以及对应的ExtensionRegistryLite类型的扩展注册器中解析出ChatRoom对象, +// 同样是将实际解析工作交给内部的PARSER对象来执行,不同的是这里传入了扩展注册器, +// 可用于处理包含扩展类型的Protobuf消息数据,使得解析更加灵活全面,能正确处理带有扩展的消息还原为ChatRoom对象 public static ChatRoom parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - + // 提供一个静态方法parseFrom,用于从给定的ByteString类型的数据中解析出ChatRoom对象。 +//ByteString是Google Protobuf中用于表示字节序列的一种类型,常用于存储和传递序列化后的消息数据。 +// 这里将实际的解析工作委托给了内部的PARSER对象的parseFrom方法来完成,方便从ByteString格式的数据中恢复出ChatRoom对象实例, +// 适用于从不同来源获取到ByteString数据后还原ChatRoom对象的场景,比如从消息队列接收的数据等情况 public static ChatRoom parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - + // 提供一个静态方法parseFrom,用于从给定的ByteString类型的数据以及对应的ExtensionRegistryLite类型的扩展注册器中解析出ChatRoom对象。 +// 同样依靠内部的PARSER对象来执行实际解析操作,传入扩展注册器的目的是为了能够处理包含扩展类型的Protobuf消息数据, +// 确保在解析过程中可以正确识别并处理扩展部分,使得解析功能更加灵活全面,适用于处理复杂的、带有扩展的Protobuf消息还原为ChatRoom对象的情况 public static ChatRoom parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - + // 提供一个静态方法parseFrom,用于从给定的字节数组(byte[])类型的数据中解析出ChatRoom对象。 +// 字节数组是一种常见的数据表示形式,在很多数据传输、存储场景中都会用到。 +// 此方法也是借助内部的PARSER对象来完成具体解析任务,方便将字节数组形式的序列化数据还原为ChatRoom对象实例, +// 比如从文件读取的二进制数据等情况,通过该方法可以将其转换为对应的ChatRoom对象进行后续处理 public static ChatRoom parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - + // 提供一个静态方法parseFrom,用于从给定的字节数组(byte[])类型的数据以及对应的ExtensionRegistryLite类型的扩展注册器中解析出ChatRoom对象。 +// 和前面类似,通过内部的PARSER对象来解析数据,同时传入扩展注册器以处理可能存在的扩展类型, +// 使得可以从包含扩展信息的字节数组数据准确还原出ChatRoom对象,增强了解析功能的通用性和适应性,能应对更多复杂的数据情况 public static ChatRoom parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - + // 提供一个静态方法parseFrom,用于从给定的InputStream(输入流)类型的数据中解析出ChatRoom对象。 +// InputStream常用于从各种数据源(如网络连接、文件等)读取数据,这里通过调用GeneratedMessageV3类的parseWithIOException方法, +// 并传入内部的PARSER对象和输入流对象作为参数来执行实际的解析操作,同时向外声明可能抛出IOException异常, +// 方便在从输入流获取数据并解析为ChatRoom对象的过程中处理可能出现的读取错误等情况 public static ChatRoom parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - + // 提供一个静态方法parseFrom,用于从给定的InputStream(输入流)类型的数据以及对应的ExtensionRegistryLite类型的扩展注册器中解析出ChatRoom对象。 +// 同样借助GeneratedMessageV3类的相关解析方法,传入PARSER对象、输入流对象以及扩展注册器作为参数来实现解析功能, +// 这样在从输入流读取数据且数据可能包含扩展信息时,能够正确地将其解析为ChatRoom对象,同时处理好可能出现的读取异常情况 public static ChatRoom parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -481,13 +530,19 @@ public final class ChatRoomProto { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - + // 提供一个静态方法parseDelimitedFrom,用于从给定的InputStream(输入流)中解析出以特定分隔格式存储的ChatRoom对象。 +// 通常在一些数据传输场景中,多个Protobuf消息可能会以分隔的方式连续存储在输入流中,此方法会按照相应的分隔规则, +// 通过调用GeneratedMessageV3类的parseDelimitedWithIOException方法,并传入PARSER对象和输入流对象来执行解析操作, +// 同时向外声明可能抛出IOException异常,用于处理读取过程中可能出现的错误情况,方便准确解析出单个的ChatRoom对象 public static ChatRoom parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } - + // 提供一个静态方法parseDelimitedFrom,用于从给定的InputStream(输入流)以及对应的ExtensionRegistryLite类型的扩展注册器中解析出以特定分隔格式存储的ChatRoom对象。 +// 结合了输入流和扩展注册器,在处理以分隔格式存储且可能包含扩展信息的Protobuf消息时,通过GeneratedMessageV3类的相关解析方法, +// 传入PARSER对象、输入流对象以及扩展注册器作为参数来准确解析出ChatRoom对象,同时处理好读取过程中的异常情况, +// 确保在复杂的数据格式和包含扩展的场景下能正确还原对象 public static ChatRoom parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -495,14 +550,20 @@ public final class ChatRoomProto { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - + // 提供一个静态方法parseFrom,用于从给定的CodedInputStream(编码输入流)类型的数据中解析出ChatRoom对象。 +// CodedInputStream是Google Protobuf提供的一种对输入流进行编码处理的类,方便按照Protobuf的编码格式来读取数据, +// 这里通过调用GeneratedMessageV3类的parseWithIOException方法,并传入PARSER对象和CodedInputStream对象来执行实际解析操作, +// 同时向外声明可能抛出IOException异常,用于处理在按编码格式读取数据并解析对象过程中出现的错误情况 public static ChatRoom parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - + // 提供一个静态方法parseFrom,用于从给定的CodedInputStream(编码输入流)类型的数据以及对应的ExtensionRegistryLite类型的扩展注册器中解析出ChatRoom对象。 +// 借助CodedInputStream按Protobuf编码格式读取数据的特性,结合扩展注册器,通过GeneratedMessageV3类的相关解析方法, +// 传入PARSER对象、CodedInputStream对象以及扩展注册器作为参数来准确解析出ChatRoom对象,同时处理好读取过程中可能出现的异常情况, +// 适用于处理按照编码格式存储且可能包含扩展信息的Protobuf消息还原为ChatRoom对象的场景 public static ChatRoom parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -510,26 +571,38 @@ public final class ChatRoomProto { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - + // 重写newBuilderForType方法,用于创建一个适合当前类型(ChatRoom类型)的构建器(Builder)对象。 +// 此方法直接调用了newBuilder方法来获取构建器,符合一般的构建器模式的使用方式,方便后续通过构建器来创建或修改ChatRoom对象, +// 遵循了GeneratedMessageV3类以及相关接口对于创建构建器对象的规范要求 @Override public Builder newBuilderForType() { return newBuilder(); } - + // 提供一个静态方法newBuilder,用于创建一个ChatRoom对象的构建器(Builder)实例。 +// 它通过调用DEFAULT_INSTANCE(可能是ChatRoom类型的默认实例)的toBuilder方法来获取构建器, +// 构建器可以用于以一种链式调用的方式来设置ChatRoom对象的各个属性,最终构建出完整的ChatRoom对象, +// 这种方式使得对象的创建和属性设置更加灵活、易读,符合建造者模式的设计理念,方便在不同场景下创建符合需求的ChatRoom对象 public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - + // 提供一个静态方法newBuilder,用于根据给定的ChatRoom对象原型(prototype)创建一个构建器(Builder)实例。 +// 首先获取默认实例的构建器,然后通过调用mergeFrom方法将给定的ChatRoom原型对象的属性合并到构建器中, +// 这样创建出的构建器就可以基于原型对象的属性进行进一步修改和扩展,方便在已有对象基础上创建相似但又有所变化的新ChatRoom对象, +// 常用于对象的复制、修改等场景,遵循了Protobuf中构建器模式相关的操作逻辑 public static Builder newBuilder(ChatRoom prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } - + // 重写toBuilder方法,用于将当前ChatRoom对象转换为对应的构建器(Builder)对象。 +// 如果当前对象是默认实例(DEFAULT_INSTANCE),则直接创建一个新的构建器;否则创建一个新的构建器并将当前对象的属性合并到构建器中, +// 这样就可以通过构建器对当前对象进行进一步的修改和操作,方便在已有对象基础上进行属性调整等,符合构建器模式下对象与构建器相互转换的使用需求 @Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } - + // 重写newBuilderForType方法,用于创建一个适合当前类型(ChatRoom类型)且带有指定构建器父类(BuilderParent)的构建器(Builder)对象。 +// 创建一个新的Builder对象,并传入给定的构建器父类作为参数,然后返回这个构建器对象, +// 这个方法一般在更复杂的构建器层次结构或者需要指定构建器父类相关逻辑的场景下使用,遵循了GeneratedMessageV3类对于构建器创建的相关规范要求 @Override protected Builder newBuilderForType( BuilderParent parent) { @@ -537,18 +610,24 @@ public final class ChatRoomProto { return builder; } - /** - * Protobuf type {@code ChatRoom} - */ + // 定义一个名为Builder的内部静态final类,它继承自Google Protobuf的GeneratedMessageV3.Builder类, +// 同时实现了ChatRoomOrBuilder接口,意味着这个构建器类既具备GeneratedMessageV3.Builder的基础构建功能, +// 又满足了ChatRoomOrBuilder接口所规定的属性访问等相关方法要求,用于实际构建和修改ChatRoom对象, +// 可以通过链式调用其提供的各种属性设置方法来逐步构建出完整的ChatRoom对象,并且能够方便地获取已构建部分的属性信息等 public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:ChatRoom) ChatRoomOrBuilder { + // 获取ChatRoom类对应的Protobuf描述符(Descriptor), + // 这个描述符包含了ChatRoom类在Protobuf中的类型定义、字段信息等相关元数据, + // 通过调用ChatRoomProto内部静态的描述符来获取,方便后续在处理Protobuf相关逻辑(如构建器设置属性、验证等)时使用 public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return ChatRoomProto.internal_static_ChatRoom_descriptor; } - + // 获取字段访问器表(FieldAccessorTable),用于在运行时方便地访问类中的各个字段, + // 通过调用ChatRoomProto内部静态的字段访问器表对象的相关方法来确保字段访问器针对ChatRoom类及其构建器(Builder)类正确初始化, + // 保证可以准确、高效地访问类中的各个属性字段,便于在构建器中设置和获取属性值等操作 @Override protected FieldAccessorTable internalGetFieldAccessorTable() { -- 2.34.1 From 7495c26d788c67ff854ef48cbcd1057ec30f2713 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Mon, 16 Dec 2024 17:48:00 +0800 Subject: [PATCH 18/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xcs/wx/protobuf/ChatRoomProto.java | 1172 +++++++++++------ 1 file changed, 782 insertions(+), 390 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java b/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java index 18d42a5..157201b 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/protobuf/ChatRoomProto.java @@ -635,18 +635,30 @@ public final class ChatRoomProto { .ensureFieldAccessorsInitialized( ChatRoom.class, Builder.class); } - + // 私有构造函数,无参数形式。用于限制外部直接实例化Builder对象, +// 按照注释提示,构建器(Builder)对象应该通过ChatRoomProto.ChatRoom.newBuilder()方式来创建, +// 遵循了特定的创建规则,保证构建器的创建过程可控,符合整体设计模式的要求 // Construct using ChatRoomProto.ChatRoom.newBuilder() private Builder() { } - + // 私有构造函数,接收一个BuilderParent类型的参数,用于指定构建器的父类相关信息。 +// 首先调用父类(GeneratedMessageV3.Builder)的构造函数,传入给定的父类参数进行初始化, +// 这种带父类参数的构造函数一般在构建器存在层次结构或者需要关联父类特定逻辑的场景下使用, +// 同样,外部一般不会直接调用这个构造函数,而是通过规定的方式来获取构建器实例 private Builder( BuilderParent parent) { super(parent); } - + // 重写clear方法,用于清除构建器中已设置的所有属性值,将其恢复到初始状态。 +// 首先调用父类的clear方法,然后对当前类中维护的各个属性进行重置操作。 +// 将bitField0_(可能用于标记某些字段状态的位字段)重置为0, +// 根据成员列表(members_)对应的构建器(membersBuilder_)是否为空,来决定成员列表的重置方式, +// 如果membersBuilder_为空,就将成员列表设为一个空的不可变列表(通过Collections.emptyList()); +// 如果membersBuilder_不为空,则将成员列表设为null,并调用membersBuilder_的clear方法清除其内部维护的数据, +// 最后对其他各个基本类型的属性(如field2_、field3_等)也都重置为初始值0, +// 完成清除操作后返回当前构建器对象,方便进行链式调用,继续后续操作(比如重新设置属性构建对象等) @Override public Builder clear() { super.clear(); @@ -667,18 +679,29 @@ public final class ChatRoomProto { field8_ = 0L; return this; } + // 重写getDescriptorForType方法,用于获取当前构建器所构建的对象(这里是ChatRoom类型)对应的Protobuf描述符(Descriptor)。 +// 通过调用ChatRoomProto内部静态的ChatRoom_descriptor来获取描述符, +// 这个描述符包含了ChatRoom类型在Protobuf中的各种元数据信息(如字段定义、类型等), +// 在构建器进行属性设置、验证等操作时会依赖这些描述符信息,确保操作符合Protobuf的规范要求 @Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { return ChatRoomProto.internal_static_ChatRoom_descriptor; } - + // 重写getDefaultInstanceForType方法,用于获取当前构建器所对应类型(ChatRoom类型)的默认实例对象。 +// 通过调用ChatRoom类的getDefaultInstance方法来获取默认实例, +// 这个默认实例在一些场景下(比如作为初始值、对比参照等)会发挥作用,方便构建器基于默认实例进行属性修改等操作, +// 遵循了Protobuf中对于获取默认实例的规范要求以及整体的设计模式逻辑 @Override public ChatRoom getDefaultInstanceForType() { return ChatRoom.getDefaultInstance(); } - + // 重写build方法,用于根据构建器中当前设置的属性值构建出一个完整的ChatRoom对象。 +// 首先调用buildPartial方法构建出一个可能还未完全初始化的ChatRoom对象, +// 然后检查这个对象是否已经初始化(通过调用isInitialized方法),如果未初始化,则抛出一个表示未初始化消息的异常, +// 只有对象已初始化时,才返回构建好的ChatRoom对象,这样确保了返回的对象是符合要求、可以正常使用的, +// 遵循了Protobuf中对于构建完整有效对象的规范流程,保证对象的完整性和正确性 @Override public ChatRoom build() { ChatRoom result = buildPartial(); @@ -687,7 +710,12 @@ public final class ChatRoomProto { } return result; } - + // 重写buildPartial方法,用于构建一个部分初始化的ChatRoom对象,后续可能还需要进一步完善或者验证其初始化状态。 +// 首先创建一个ChatRoom对象,将当前构建器(this)作为参数传入其构造函数,实现基于构建器状态来初始化ChatRoom对象的部分属性, +// 接着调用buildPartialRepeatedFields方法来处理成员列表(可能是重复字段)相关的属性设置, +// 如果bitField0_(用于标记某些字段状态)不为0,表示还有其他一些字段需要设置,就调用buildPartial0方法来设置相应的字段值, +// 最后调用onBuilt方法(可能用于触发一些构建完成后的相关逻辑,比如通知观察者等),然后返回构建好的ChatRoom对象, +// 这个方法是构建过程中的核心逻辑部分,按照一定顺序和规则将构建器中的属性值传递到ChatRoom对象中,逐步完成对象的构建 @Override public ChatRoom buildPartial() { ChatRoom result = new ChatRoom(this); @@ -698,7 +726,13 @@ public final class ChatRoomProto { onBuilt(); return result; } - + // 私有方法,用于构建成员列表(可能是重复字段)相关的属性到给定的ChatRoom对象中。 +// 如果成员列表对应的构建器(membersBuilder_)为空,说明成员列表没有使用独立的构建器来管理, +// 此时先检查bitField0_中对应成员列表的标记位(这里假设按位与0x00000001判断是否可修改等情况), +// 如果标记位满足条件,就将成员列表设为不可变列表(通过Collections.unmodifiableList)并清除对应标记位, +// 然后将成员列表设置到ChatRoom对象的成员列表属性(result.members_)中。 +// 如果membersBuilder_不为空,说明成员列表使用了构建器来管理,就通过调用构建器的build方法来构建成员列表,并设置到ChatRoom对象的相应属性中, +// 此方法专门处理成员列表属性的构建逻辑,确保成员列表在ChatRoom对象中正确设置,符合Protobuf中对于重复字段处理的相关要求 private void buildPartialRepeatedFields(ChatRoom result) { if (membersBuilder_ == null) { if (((bitField0_ & 0x00000001) != 0)) { @@ -710,7 +744,11 @@ public final class ChatRoomProto { result.members_ = membersBuilder_.build(); } } - + // 私有方法,用于根据bitField0_中标记的状态,将构建器中其他基本类型的属性值设置到给定的ChatRoom对象中。 +// 首先获取bitField0_的值到局部变量from_bitField0_,方便后续按位判断操作, +// 然后依次检查bitField0_中对应各个字段的标记位(如0x00000002对应field2_等,这里通过按位与判断是否需要设置), +// 如果标记位满足条件,就将构建器中的对应属性值(如field2_、field3_等)设置到ChatRoom对象的相应属性(如result.field2_、result.field3_等)中, +// 这个方法按照位标记的方式,有选择地将构建器中的属性值传递给ChatRoom对象,实现灵活的属性设置逻辑,符合Protobuf中对于对象构建过程中属性处理的相关设计 private void buildPartial0(ChatRoom result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000002) != 0)) { @@ -735,45 +773,67 @@ public final class ChatRoomProto { result.field8_ = field8_; } } - + // 重写clone方法,用于创建当前构建器对象的一个副本(克隆)。 +// 通过调用父类(GeneratedMessageV3.Builder)的clone方法来实现克隆功能, +// 克隆后的构建器对象与原构建器具有相同的属性设置状态,可以独立进行后续的修改、构建等操作, +// 在需要复制构建器状态或者基于已有构建器创建相似但独立的构建器时会用到这个方法,遵循了Java中对象克隆的一般规范以及Protobuf相关要求 @Override public Builder clone() { return super.clone(); } - + // 重写setField方法,用于设置指定字段(通过FieldDescriptor描述)的属性值(Object类型)。 +// 直接调用父类(GeneratedMessageV3.Builder)的setField方法来完成设置操作, +// 具体的设置逻辑由父类实现,一般会根据字段描述符找到对应的字段并设置相应的值, +// 符合Protobuf中通过构建器设置对象属性的规范操作方式,方便统一管理和操作对象的各个属性 @Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, Object value) { return super.setField(field, value); } - + // 重写clearField方法,用于清除指定字段(通过FieldDescriptor描述)的属性值,将其恢复到默认状态。 +// 直接调用父类(GeneratedMessageV3.Builder)的clearField方法来执行清除操作, +// 父类会根据字段描述符找到对应的字段并进行相应的清除处理, +// 按照Protobuf的设计,方便在构建器中灵活地重置某个特定字段的值,便于重新设置或者调整对象的属性配置 @Override public Builder clearField( com.google.protobuf.Descriptors.FieldDescriptor field) { return super.clearField(field); } - + // 重写clearOneof方法,用于清除某个Oneof(Protobuf中的一种字段组合方式,同一时刻只有一个字段能被设置)中的字段值。 +// 直接调用父类(GeneratedMessageV3.Builder)的clearOneof方法来实现清除操作, +// 父类会按照Oneof的定义和规则,将属于该Oneof的所有字段都恢复到默认状态, +// 在处理Oneof相关字段的重置操作时使用这个方法,符合Protobuf对于Oneof字段管理的规范要求 @Override public Builder clearOneof( com.google.protobuf.Descriptors.OneofDescriptor oneof) { return super.clearOneof(oneof); } - + // 重写setRepeatedField方法,用于设置重复字段(通过FieldDescriptor描述)中指定索引位置的属性值(Object类型)。 +// 直接调用父类(GeneratedMessageV3.Builder)的setRepeatedField方法来完成设置操作, +// 父类会根据字段描述符以及给定的索引,找到对应的重复字段中的元素并设置相应的值, +// 这在构建器中用于操作重复字段(如列表类型的字段)的特定位置元素的属性值设置,遵循Protobuf对于重复字段操作的规范 @Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, Object value) { return super.setRepeatedField(field, index, value); } - + // 重写addRepeatedField方法,用于向重复字段(通过FieldDescriptor描述)中添加一个属性值(Object类型)。 +// 直接调用父类(GeneratedMessageV3.Builder)的addRepeatedField方法来执行添加操作, +// 父类会根据字段描述符将给定的属性值添加到对应的重复字段末尾(通常是列表类型的字段), +// 在构建器中方便向对象的重复字段中动态添加元素,符合Protobuf对于重复字段管理的操作规范要求 @Override public Builder addRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, Object value) { return super.addRepeatedField(field, value); } - + // 重写mergeFrom方法,用于将另一个Protobuf消息(Message类型)合并到当前构建器中。 +// 如果传入的消息是ChatRoom类型,就调用专门针对ChatRoom类型的mergeFrom方法(this.mergeFrom((ChatRoom) other))进行合并操作; +// 如果不是ChatRoom类型,则调用父类(GeneratedMessageV3.Builder)的mergeFrom方法来执行合并,将传入消息的属性尽可能合并到当前构建器中, +// 最后返回当前构建器对象,方便进行链式调用,继续后续的构建操作, +// 这个方法实现了一种灵活的消息合并逻辑,使得构建器可以从其他消息对象中获取属性值来丰富自身已设置的属性,符合Protobuf中对象构建过程中属性合并的需求 @Override public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof ChatRoom) { @@ -783,7 +843,18 @@ public final class ChatRoomProto { return this; } } - + // 定义一个针对ChatRoom类型消息的mergeFrom方法,用于将另一个ChatRoom对象的属性合并到当前构建器中。 +// 如果传入的ChatRoom对象是默认实例(通过ChatRoom.getDefaultInstance()判断),则直接返回当前构建器,不做任何合并操作, +// 因为默认实例一般表示没有设置任何属性的初始状态。 +// 对于成员列表(members_)属性,如果当前构建器的成员列表对应的构建器(membersBuilder_)为空, +// 且传入的ChatRoom对象的成员列表不为空,就根据当前构建器的成员列表是否为空来决定合并方式, +// 如果当前构建器成员列表为空,就直接将传入对象的成员列表赋值过来,并清除相应的标记位(bitField0_相关操作); +// 如果当前构建器成员列表不为空,就先确保成员列表可修改(通过ensureMembersIsMutable方法,这里未展示其代码),然后将传入对象的成员列表元素全部添加进来, +// 每进行一次成员列表相关的修改操作后,都会调用onChanged方法(可能用于触发一些属性变更后的相关逻辑,比如更新缓存等)。 +// 对于其他基本类型的属性(如field2_、field3_等),如果传入的ChatRoom对象中对应属性值不为0,则调用相应的设置方法(如setField2等)将值设置到当前构建器中, +// 最后还会将传入对象的未知字段(通过getUnknownFields方法获取)合并到当前构建器的未知字段中,并再次调用onChanged方法, +// 然后返回当前构建器对象,方便继续链式调用,这个方法详细定义了如何将一个ChatRoom对象的属性合并到当前构建器中,实现了对象间属性合并的功能, +// 方便在构建对象过程中整合不同来源的属性数据,符合Protobuf对于对象构建和属性管理的相关要求 public Builder mergeFrom(ChatRoom other) { if (other == ChatRoom.getDefaultInstance()) return this; if (membersBuilder_ == null) { @@ -837,12 +908,19 @@ public final class ChatRoomProto { onChanged(); return this; } - + // 重写isInitialized方法,用于判断构建器当前的状态是否已初始化。 +// 在此处,该方法直接返回true,表示构建器始终处于已初始化的状态。 +// 通常在更复杂的对象构建场景中,可能会根据构建器内各个属性是否都已合理设置等条件来综合判断初始化情况, +// 但这里简单地认定其总是已初始化,具体是否符合实际需求取决于业务逻辑和整体设计 @Override public final boolean isInitialized() { return true; } - + // 重写mergeFrom方法,用于从给定的CodedInputStream(编码输入流)以及对应的ExtensionRegistryLite类型的扩展注册器中读取数据, +// 并将读取到的数据合并到当前构建器中,实现从输入流解析数据并更新构建器状态的功能,同时向外声明可能抛出IOException异常,用于处理读取过程中的错误情况。 +// 如果传入的扩展注册器为null,则抛出空指针异常,因为扩展注册器在处理可能包含扩展类型的Protobuf消息时是必不可少的。 +// 接着通过一个循环来不断读取输入流中的数据,每次循环先读取一个标签(tag),这个标签用于标识接下来要读取的数据类型及对应的字段等信息, +// 然后根据不同的标签值进入相应的处理逻辑分支(通过switch语句)。 @Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, @@ -882,6 +960,8 @@ public final class ChatRoomProto { bitField0_ |= 0x00000004; break; } // case 24 + // 当标签值为32时,对应Protobuf中定义的field4字段(int32类型), + // 从输入流读取int32值赋给构建器的field4_属性,同时通过位或操作(bitField0_ |= 0x00000008)设置bitField0_中对应field4_字段的标记位,以标记该字段状态。 case 32: { field4_ = input.readInt32(); bitField0_ |= 0x00000008; @@ -892,21 +972,30 @@ public final class ChatRoomProto { bitField0_ |= 0x00000010; break; } // case 40 + // 当标签值为40时,对应Protobuf中定义的roomCapacity字段(int32类型), + // 从输入流读取int32值赋给构建器的roomCapacity_属性,通过位或操作(bitField0_ |= 0x00000010)设置bitField0_中对应roomCapacity字段的标记位,用于记录其状态。 case 48: { field6_ = input.readInt32(); bitField0_ |= 0x00000020; break; } // case 48 + // 当标签值为48时,对应Protobuf中定义的field6字段(int32类型), + // 从输入流读取int32值赋给构建器的field6_属性,同时通过位或操作(bitField0_ |= 0x00000020)设置bitField0_中对应field6_字段的标记位,便于后续操作知晓该字段情况。 case 56: { field7_ = input.readInt64(); bitField0_ |= 0x00000040; break; } // case 56 + // 当标签值为64时,对应Protobuf中定义的field8字段(int64类型), + // 从输入流读取int64值赋给构建器的field8_属性,通过位或操作(bitField0_ |= 0x00000080)设置bitField0_中对应field8_字段的标记位,以标记该字段是否已设置等状态。 case 64: { field8_ = input.readInt64(); bitField0_ |= 0x00000080; break; } // case 64 + // 当标签值为其他情况时,调用父类的parseUnknownField方法来尝试解析未知字段, + // 如果该方法返回false,表示遇到了结束组(endgroup)的标签,此时将循环结束标志设为true,退出循环; + // 如果返回true,则继续循环读取下一个标签进行处理。 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -918,29 +1007,43 @@ public final class ChatRoomProto { } catch (com.google.protobuf.InvalidProtocolBufferException e) { throw e.unwrapIOException(); } finally { + // 无论是否发生异常,最后都会调用onChanged方法,这个方法可能用于触发一些属性变更后的相关逻辑, + // 比如通知构建器相关的观察者、更新内部缓存等操作,确保在数据合并完成后执行相应的后置逻辑。 onChanged(); } // finally return this; } - + // 定义一个整型的位字段变量bitField0_,用于标记构建器中各个字段的一些状态信息, +// 通过不同的位来表示不同字段是否已被设置、是否可修改等情况,方便在构建对象过程中进行状态管理和相应逻辑判断, +// 例如前面在设置各个字段值时会通过位或操作来设置对应位,后续可以通过按位与等操作来检查相应字段的状态。 private int bitField0_; - + // 定义一个成员列表变量members_,初始化为一个空的不可变列表(通过Collections.emptyList()),用于存储ChatRoom对象中的成员信息(成员类型为Member), +// 在构建器中可以根据需要将成员对象添加到这个列表里,后续通过相关方法可以获取这个列表以及其中的成员信息, +// 同时会根据成员列表构建器(membersBuilder_)的情况以及相关操作来决定这个列表是否可修改等性质。 private java.util.List members_ = java.util.Collections.emptyList(); - + // 私有方法,用于确保成员列表(members_)是可修改的。 +// 通过检查bitField0_中对应成员列表的标记位(通过按位与0x00000001判断), +// 如果标记位表示成员列表不可修改(即对应位为0),则创建一个新的可变的ArrayList,并将原成员列表中的元素复制到新列表中, +// 然后通过位或操作(bitField0_ |= 0x00000001)设置对应标记位,表示成员列表已变为可修改状态, +// 这样在后续需要向成员列表添加成员等修改操作时就可以正常进行了。 private void ensureMembersIsMutable() { if (!((bitField0_ & 0x00000001) != 0)) { members_ = new java.util.ArrayList(members_); bitField0_ |= 0x00000001; } } - + // 定义一个成员列表构建器类型的变量membersBuilder_,用于更方便、更灵活地构建和管理成员列表(members_), +// 它提供了一些额外的方法(如添加成员、获取成员数量等)来操作成员列表,在构建器中可以根据具体情况选择使用这个构建器或者直接操作成员列表变量, +// 例如在合并数据等操作时,会根据membersBuilder_是否为空来决定不同的成员添加方式,以适应不同的构建场景和需求。 private com.google.protobuf.RepeatedFieldBuilderV3< Member, Member.Builder, MemberOrBuilder> membersBuilder_; - /** - * repeated .Member members = 1; - */ + // 重写获取成员列表的方法,根据成员列表构建器(membersBuilder_)是否为空来返回不同形式的成员列表。 +// 如果membersBuilder_为空,就返回一个不可变的成员列表(通过Collections.unmodifiableList),以保证外部不能随意修改该列表; +// 如果membersBuilder_不为空,则返回成员列表构建器中维护的成员列表(通过getMessageList方法获取), +// 这样对外提供了一种统一的获取成员列表的接口,同时根据内部实现情况灵活控制成员列表的可访问性和修改性。 +// 此方法对应了Protobuf中对成员列表字段(repeated.Member members = 1)的属性访问要求,方便外部获取构建器中维护的成员信息。 public java.util.List getMembersList() { if (membersBuilder_ == null) { return java.util.Collections.unmodifiableList(members_); @@ -949,9 +1052,11 @@ public final class ChatRoomProto { } } - /** - * repeated .Member members = 1; - */ + // 重写获取成员数量的方法,同样根据成员列表构建器(membersBuilder_)是否为空来决定获取成员数量的方式。 +// 如果membersBuilder_为空,就直接返回成员列表(members_)的大小(即成员个数,通过size方法获取); +// 如果membersBuilder_不为空,则通过成员列表构建器的getCount方法来获取成员数量, +// 对外提供了统一的获取成员数量的接口,方便在遍历、判断等操作中知晓构建器中成员的个数情况, +// 符合Protobuf对于重复字段(成员列表在这里属于重复字段)相关属性访问的规范要求。 public int getMembersCount() { if (membersBuilder_ == null) { return members_.size(); @@ -960,9 +1065,10 @@ public final class ChatRoomProto { } } - /** - * repeated .Member members = 1; - */ + // 重写获取成员列表中指定索引位置成员的方法,根据成员列表对应的构建器(membersBuilder_)是否为空来决定获取方式。 +// 如果membersBuilder_为空,说明成员列表没有使用构建器进行管理,直接从成员列表(members_)中通过索引获取对应位置的成员对象(通过调用get方法)并返回; +// 如果membersBuilder_不为空,则通过成员列表构建器的getMessage方法,按照给定索引获取成员对象并返回, +// 这样提供了一种统一的根据索引获取成员的方式,方便外部代码在构建ChatRoom对象过程中获取成员列表里特定位置的成员信息。 public Member getMembers(int index) { if (membersBuilder_ == null) { return members_.get(index); @@ -971,9 +1077,12 @@ public final class ChatRoomProto { } } - /** - * repeated .Member members = 1; - */ + // 重写设置成员列表中指定索引位置成员的方法,用于将给定的Member类型的成员对象设置到成员列表的指定索引位置上,同时返回当前构建器对象,方便链式调用。 +// 如果membersBuilder_为空,意味着成员列表是直接通过普通列表进行管理的,此时先进行一些合法性检查,若传入的成员对象为null,则抛出空指针异常, +// 然后调用ensureMembersIsMutable方法确保成员列表可修改,接着通过列表的set方法将指定索引位置的成员替换为传入的成员对象, +// 最后调用onChanged方法(可能用于触发一些属性变更后的相关逻辑,比如通知观察者等); +// 如果membersBuilder_不为空,则通过成员列表构建器的setMessage方法来设置指定索引位置的成员对象, +// 这个方法符合Protobuf中对于重复字段(这里的成员列表属于重复字段)可修改操作的规范要求,方便在构建对象时灵活设置成员列表中的成员。 public Builder setMembers( int index, Member value) { if (membersBuilder_ == null) { @@ -989,9 +1098,12 @@ public final class ChatRoomProto { return this; } - /** - * repeated .Member members = 1; - */ + // 重写设置成员列表中指定索引位置成员的方法,这里传入的是Member类型成员对象的构建器(Builder类型),用于根据构建器构建出成员对象后将其设置到成员列表的指定索引位置上, +// 同时返回当前构建器对象,便于进行链式调用。 +// 如果membersBuilder_为空,先调用ensureMembersIsMutable方法确保成员列表可修改,然后通过传入的成员对象构建器构建出成员对象(通过build方法), +// 再将构建好的成员对象设置到成员列表指定索引位置(通过列表的set方法),最后调用onChanged方法; +// 如果membersBuilder_不为空,则通过成员列表构建器的setMessage方法,先构建传入的成员对象构建器中的成员对象,再将其设置到指定索引位置, +// 此方法方便在构建对象时,利用成员对象构建器来灵活创建并设置成员列表中的成员,符合Protobuf构建器模式下操作重复字段的相关规范。 public Builder setMembers( int index, Member.Builder builderForValue) { if (membersBuilder_ == null) { @@ -1004,9 +1116,11 @@ public final class ChatRoomProto { return this; } - /** - * repeated .Member members = 1; - */ + // 重写向成员列表末尾添加单个Member类型成员对象的方法,用于将给定的成员对象添加到成员列表中,同时返回当前构建器对象,方便链式调用。 +// 如果membersBuilder_为空,先进行合法性检查,若传入的成员对象为null,则抛出空指针异常, +// 接着调用ensureMembersIsMutable方法确保成员列表可修改,然后通过列表的add方法将成员对象添加到成员列表末尾,最后调用onChanged方法; +// 如果membersBuilder_不为空,则通过成员列表构建器的addMessage方法将成员对象添加到成员列表末尾, +// 这个方法满足了在构建ChatRoom对象时向成员列表动态添加成员的需求,符合Protobuf对于重复字段操作的规范要求。 public Builder addMembers(Member value) { if (membersBuilder_ == null) { if (value == null) { @@ -1021,9 +1135,11 @@ public final class ChatRoomProto { return this; } - /** - * repeated .Member members = 1; - */ + // 重写向成员列表指定索引位置添加单个Member类型成员对象的方法,用于将给定的成员对象添加到成员列表的指定索引位置上,同时返回当前构建器对象,便于链式调用。 +// 如果membersBuilder_为空,先进行合法性检查,若传入的成员对象为null,则抛出空指针异常, +// 接着调用ensureMembersIsMutable方法确保成员列表可修改,然后通过列表的add方法(这里带有索引参数,可指定插入位置)将成员对象添加到指定索引位置,最后调用onChanged方法; +// 如果membersBuilder_不为空,则通过成员列表构建器的addMessage方法将成员对象添加到指定索引位置, +// 此方法方便在构建对象时,按照指定位置向成员列表添加成员,遵循了Protobuf对于重复字段操作的相关规范,增强了成员列表操作的灵活性。 public Builder addMembers( int index, Member value) { if (membersBuilder_ == null) { @@ -1039,9 +1155,11 @@ public final class ChatRoomProto { return this; } - /** - * repeated .Member members = 1; - */ + // 重写向成员列表末尾添加通过Member类型成员对象构建器(Builder类型)构建出的成员对象的方法, +// 先根据传入的成员对象构建器构建出成员对象,再将其添加到成员列表末尾,同时返回当前构建器对象,方便链式调用。 +// 如果membersBuilder_为空,先调用ensureMembersIsMutable方法确保成员列表可修改,然后通过构建器构建出成员对象(通过build方法)并添加到成员列表末尾(通过列表的add方法),最后调用onChanged方法; +// 如果membersBuilder_不为空,则通过成员列表构建器的addMessage方法,先构建传入的成员对象构建器中的成员对象,再将其添加到成员列表末尾, +// 这样在构建对象时,可以利用成员对象构建器来创建并添加成员到成员列表,符合Protobuf构建器模式下操作重复字段的相关规范要求。 public Builder addMembers( Member.Builder builderForValue) { if (membersBuilder_ == null) { @@ -1054,9 +1172,11 @@ public final class ChatRoomProto { return this; } - /** - * repeated .Member members = 1; - */ + // 重写向成员列表指定索引位置添加通过Member类型成员对象构建器(Builder类型)构建出的成员对象的方法, +// 先根据传入的成员对象构建器构建出成员对象,再将其添加到成员列表的指定索引位置上,同时返回当前构建器对象,便于链式调用。 +// 如果membersBuilder_为空,先调用ensureMembersIsMutable方法确保成员列表可修改,然后通过构建器构建出成员对象(通过build方法)并添加到成员列表指定索引位置(通过列表的add方法,带有索引参数),最后调用onChanged方法; +// 如果membersBuilder_不为空,则通过成员列表构建器的addMessage方法,先构建传入的成员对象构建器中的成员对象,再将其添加到指定索引位置, +// 此方法方便在构建对象时,按照指定位置利用成员对象构建器来创建并添加成员到成员列表,符合Protobuf对于重复字段操作的相关规范,进一步增强了成员列表操作的灵活性。 public Builder addMembers( int index, Member.Builder builderForValue) { if (membersBuilder_ == null) { @@ -1069,9 +1189,11 @@ public final class ChatRoomProto { return this; } - /** - * repeated .Member members = 1; - */ + // 重写向成员列表添加多个Member类型成员对象的方法,这里传入一个可迭代的(Iterable)成员对象集合,用于将集合中的所有成员对象添加到成员列表中, +// 同时返回当前构建器对象,方便链式调用。 +// 如果membersBuilder_为空,先调用ensureMembersIsMutable方法确保成员列表可修改,然后通过AbstractMessageLite.Builder的addAll方法将可迭代集合中的成员对象全部添加到成员列表中, +// 最后调用onChanged方法;如果membersBuilder_不为空,则通过成员列表构建器的addAllMessages方法将可迭代集合中的成员对象添加到成员列表中, +// 这个方法便于在构建对象时,一次性批量添加多个成员到成员列表,符合Protobuf对于重复字段批量操作的规范要求,提高了添加成员的效率。 public Builder addAllMembers( Iterable values) { if (membersBuilder_ == null) { @@ -1085,9 +1207,10 @@ public final class ChatRoomProto { return this; } - /** - * repeated .Member members = 1; - */ + // 重写清除成员列表中所有成员的方法,用于将成员列表重置为空,同时返回当前构建器对象,方便后续继续进行其他构建操作(比如重新添加成员等)。 +// 如果membersBuilder_为空,直接将成员列表设为一个空的不可变列表(通过Collections.emptyList()),并通过位操作(bitField0_ = (bitField0_ & ~0x00000001))清除成员列表相关的标记位, +// 最后调用onChanged方法;如果membersBuilder_不为空,则通过成员列表构建器的clear方法来清除所有成员, +// 此方法符合Protobuf中对于重复字段(成员列表在这里是重复字段)重置操作的规范要求,方便在构建对象过程中重新初始化成员列表。 public Builder clearMembers() { if (membersBuilder_ == null) { members_ = java.util.Collections.emptyList(); @@ -1099,9 +1222,12 @@ public final class ChatRoomProto { return this; } - /** - * repeated .Member members = 1; - */ + // 重写从成员列表中移除指定索引位置成员的方法,用于删除成员列表中指定位置的成员对象,同时返回当前构建器对象,方便链式调用。 +// 如果成员列表对应的构建器(membersBuilder_)为空,意味着成员列表是通过普通列表进行管理的, +// 此时先调用ensureMembersIsMutable方法确保成员列表可修改,然后通过列表的remove方法移除指定索引位置的成员, +// 最后调用onChanged方法(可能用于触发一些属性变更后的相关逻辑,比如通知观察者等); +// 如果membersBuilder_不为空,则通过成员列表构建器的remove方法来移除指定索引位置的成员, +// 这个方法符合Protobuf中对于重复字段(这里的成员列表属于重复字段)元素删除操作的规范要求,方便在构建对象时对成员列表进行灵活的修改。 public Builder removeMembers(int index) { if (membersBuilder_ == null) { ensureMembersIsMutable(); @@ -1113,17 +1239,18 @@ public final class ChatRoomProto { return this; } - /** - * repeated .Member members = 1; - */ + // 重写获取成员列表中指定索引位置成员对应的构建器(Builder类型)的方法,通过调用getMembersFieldBuilder方法获取成员列表构建器, +// 再通过其getBuilder方法获取指定索引位置成员对应的构建器对象并返回, +// 这样可以方便地获取到用于进一步构建或修改特定成员对象的构建器,符合Protobuf构建器模式下对成员对象操作的相关规范,便于更细致地操作成员列表中的成员。 public Member.Builder getMembersBuilder( int index) { return getMembersFieldBuilder().getBuilder(index); } - /** - * repeated .Member members = 1; - */ + // 重写获取成员列表中指定索引位置成员或者其对应的只读构建器(取决于成员列表构建器是否存在)的方法,用于获取成员列表中指定位置的成员对象或者其对应的只读构建器对象,方便外部代码进行相应的访问和操作。 +// 如果成员列表对应的构建器(membersBuilder_)为空,直接从成员列表(members_)中通过索引获取成员对象并返回; +// 如果membersBuilder_不为空,则通过成员列表构建器的getMessageOrBuilder方法获取指定索引位置成员对应的只读构建器或者成员对象并返回, +// 提供了一种统一的根据索引获取成员或其对应只读构建器的方式,满足不同场景下对成员列表中元素访问的需求,符合Protobuf对于重复字段相关操作的规范要求。 public MemberOrBuilder getMembersOrBuilder( int index) { if (membersBuilder_ == null) { @@ -1133,9 +1260,10 @@ public final class ChatRoomProto { } } - /** - * repeated .Member members = 1; - */ + // 重写获取成员列表中所有成员对应的只读构建器列表(或者不可变成员列表,取决于成员列表构建器是否存在)的方法,对外提供一种统一的获取成员相关只读构建器列表的方式。 +// 如果成员列表对应的构建器(membersBuilder_)不为空,就通过成员列表构建器的getMessageOrBuilderList方法获取所有成员对应的只读构建器列表并返回; +// 如果membersBuilder_为空,则返回一个不可变的成员列表(通过Collections.unmodifiableList), +// 这样方便外部代码在不同构建场景下,按照统一的接口来获取成员列表相关的只读构建器或者成员列表本身,符合Protobuf对于重复字段相关属性访问的规范要求。 public java.util.List getMembersOrBuilderList() { if (membersBuilder_ != null) { @@ -1145,33 +1273,40 @@ public final class ChatRoomProto { } } - /** - * repeated .Member members = 1; - */ + // 重写向成员列表末尾添加一个默认的Member类型成员对象构建器(Builder类型)的方法, +// 通过调用getMembersFieldBuilder方法获取成员列表构建器,再通过其addBuilder方法添加一个默认的成员对象构建器(传入Member的默认实例), +// 最后返回添加的成员对象构建器,方便后续通过构建器进一步构建成员对象,符合Protobuf构建器模式下向成员列表添加元素构建器的操作规范,便于动态创建并添加成员到成员列表。 public Member.Builder addMembersBuilder() { return getMembersFieldBuilder().addBuilder( Member.getDefaultInstance()); } - /** - * repeated .Member members = 1; - */ + // 重写向成员列表指定索引位置添加一个默认的Member类型成员对象构建器(Builder类型)的方法, +// 通过调用getMembersFieldBuilder方法获取成员列表构建器,再通过其addBuilder方法,传入指定索引以及Member的默认实例,将默认成员对象构建器添加到指定索引位置, +// 最后返回添加的成员对象构建器,方便后续利用该构建器构建成员对象,符合Protobuf构建器模式下在指定位置添加元素构建器的操作规范,增强了成员列表操作的灵活性。 public Member.Builder addMembersBuilder( int index) { return getMembersFieldBuilder().addBuilder( index, Member.getDefaultInstance()); } - /** - * repeated .Member members = 1; - */ + // 重写获取成员列表中所有成员对象对应的构建器列表的方法,通过调用getMembersFieldBuilder方法获取成员列表构建器, +// 再通过其getBuilderList方法获取所有成员对应的构建器列表并返回, +// 方便外部代码获取到所有成员对应的构建器,进而可以批量地对成员对象进行构建、修改等操作,符合Protobuf构建器模式下对成员列表相关操作的规范要求。 public java.util.List getMembersBuilderList() { return getMembersFieldBuilder().getBuilderList(); } - + // 私有方法,用于获取成员列表对应的构建器(RepeatedFieldBuilderV3类型),如果成员列表构建器(membersBuilder_)为空, +// 则创建一个新的RepeatedFieldBuilderV3对象,传入成员列表(members_)、成员列表可修改的标记位(通过bitField0_判断)、父类相关信息(通过getParentForChildren方法获取,这里未展示其代码)以及对象是否干净的标识(通过isClean方法获取,这里未展示其代码)作为参数进行初始化, +// 同时将成员列表变量设为null(因为后续通过构建器来管理成员列表了),最后返回创建好的成员列表构建器, +// 这个方法用于确保可以获取到成员列表对应的构建器对象,方便在其他与成员列表操作相关的方法中统一使用构建器来管理成员列表,遵循Protobuf对于重复字段构建器管理的相关规范。 private com.google.protobuf.RepeatedFieldBuilderV3< Member, Member.Builder, MemberOrBuilder> +// 私有方法,用于获取成员列表对应的构建器(RepeatedFieldBuilderV3类型),如果成员列表构建器(membersBuilder_)为空, +// 则创建一个新的RepeatedFieldBuilderV3对象,传入成员列表(members_)、成员列表可修改的标记位(通过bitField0_判断)、父类相关信息(通过getParentForChildren方法获取,这里未展示其代码)以及对象是否干净的标识(通过isClean方法获取,这里未展示其代码)作为参数进行初始化, +// 同时将成员列表变量设为null(因为后续通过构建器来管理成员列表了),最后返回创建好的成员列表构建器, +// 这个方法用于确保可以获取到成员列表对应的构建器对象,方便在其他与成员列表操作相关的方法中统一使用构建器来管理成员列表,遵循Protobuf对于重复字段构建器管理的相关规范。 getMembersFieldBuilder() { if (membersBuilder_ == null) { membersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< @@ -1184,25 +1319,22 @@ public final class ChatRoomProto { } return membersBuilder_; } - + // 定义一个整型变量field2_,用于存储ChatRoom对象中名为field2的字段的值, +// 这个字段在Protobuf定义中可能有特定的语义和用途,后续通过相应的方法可以对其进行获取、设置等操作,以构建完整的ChatRoom对象。 private int field2_; - /** - * int32 field2 = 2; - * - * @return The field2. - */ + // 重写获取field2字段值的方法,直接返回存储该字段值的变量field2_, +// 对外提供获取这个属性值的接口,方便在业务逻辑等代码中使用该属性的数据, +// 符合类实现的相关接口对于属性访问的规范要求,便于外部代码获取该属性内容,对应了Protobuf中对该字段的定义及访问方式。 @Override public int getField2() { return field2_; } - /** - * int32 field2 = 2; - * - * @param value The field2 to set. - * @return This builder for chaining. - */ + // 重写设置field2字段值的方法,用于将传入的整数值设置为field2字段的值,同时返回当前构建器对象,方便链式调用。 +// 先将传入的整数值赋值给field2_变量,然后通过位或操作(bitField0_ |= 0x00000002)设置bitField0_中对应field2字段的标记位,用于标记该字段已被设置等相关状态管理, +// 最后调用onChanged方法(可能用于触发一些属性变更后的相关逻辑,比如通知观察者等), +// 这样就实现了按照Protobuf规范对field2字段值的设置功能,方便在构建ChatRoom对象时灵活配置该字段的值。 public Builder setField2(int value) { field2_ = value; @@ -1211,36 +1343,33 @@ public final class ChatRoomProto { return this; } - /** - * int32 field2 = 2; - * - * @return This builder for chaining. - */ + // 重写清除field2字段值的方法,用于将field2字段的值重置为0,并清除bitField0_中对应field2字段的标记位,同时返回当前构建器对象,方便后续操作。 +// 通过位操作(bitField0_ = (bitField0_ & ~0x00000002))清除标记位,然后将field2_变量赋值为0,最后调用onChanged方法, +// 实现了按照Protobuf规范对field2字段的重置操作,方便在构建对象过程中重新初始化该字段的值,符合对象构建过程中属性管理的需求。 public Builder clearField2() { bitField0_ = (bitField0_ & ~0x00000002); field2_ = 0; onChanged(); return this; } + // 定义一个整型变量field3_,用于存储ChatRoom对象中名为field3的字段的值, +// 该字段在Protobuf定义中有其特定含义,后续可通过相关方法对其进行获取、设置等操作,以完善ChatRoom对象的构建。 private int field3_; - /** - * int32 field3 = 3; - * - * @return The field3. - */ + // 重写获取field3字段值的方法,直接返回存储该字段值的变量field3_, +// 对外提供获取这个属性值的接口,便于在业务逻辑等代码中获取该属性的数据, +// 遵循了类实现的相关接口对于属性访问的规范要求,对应了Protobuf中对该字段的定义及访问方式,方便外部代码与之交互。 @Override public int getField3() { return field3_; } - /** - * int32 field3 = 3; - * - * @param value The field3 to set. - * @return This builder for chaining. - */ + // 重写设置field3字段值的方法,用于将传入的整数值设置为field3字段的值,同时返回当前构建器对象,便于链式调用。 +// 先把传入的整数值赋给field3_变量,再通过位或操作(bitField0_ |= 0x00000004)设置bitField0_中对应field3字段的标记位来标记该字段状态, +// 最后调用onChanged方法(用于触发属性变更相关逻辑), +// 以此实现按照Protobuf规范对field3字段值的设置功能,方便在构建ChatRoom对象时配置该字段的具体值。 + public Builder setField3(int value) { field3_ = value; @@ -1249,36 +1378,31 @@ public final class ChatRoomProto { return this; } - /** - * int32 field3 = 3; - * - * @return This builder for chaining. - */ + // 重写清除field3字段值的方法,用于将field3字段的值重置为0,并清除bitField0_中对应field3字段的标记位,同时返回当前构建器对象,方便后续构建操作。 +// 通过位操作(bitField0_ = (bitField0_ & ~0x00000004))清除标记位,然后将field3_变量赋值为0,最后调用onChanged方法, +// 实现了按照Protobuf规范对field3字段的重置操作,便于在构建对象过程中重新初始化该字段的值,符合对象构建时属性管理的相关要求。 public Builder clearField3() { bitField0_ = (bitField0_ & ~0x00000004); field3_ = 0; onChanged(); return this; } - + // 定义一个整型变量field4_,用于存储ChatRoom对象中名为field4的字段的值, +// 它在Protobuf的定义中有相应的作用,后续可通过相关方法来操作这个变量,比如获取、设置值等,以完成ChatRoom对象的构建。 private int field4_; - /** - * int32 field4 = 4; - * - * @return The field4. - */ + // 重写获取field4字段值的方法,直接返回存储该字段值的变量field4_, +// 对外提供获取这个属性值的接口,方便外部代码在业务逻辑中获取该属性的数据, +// 符合类所实现接口对于属性访问的规范要求,对应了Protobuf中对该字段的定义及访问方式,便于代码间的交互使用。 @Override public int getField4() { return field4_; } - /** - * int32 field4 = 4; - * - * @param value The field4 to set. - * @return This builder for chaining. - */ + // 重写设置field4字段值的方法,用于将传入的整数值赋给field4_变量,以此来更新ChatRoom对象构建器中field4字段的值。 +// 同时,通过位或操作(bitField0_ |= 0x00000008)设置bitField0_中对应field4字段的标记位,标记该字段已被设置,方便后续进行相关状态判断和操作。 +// 最后调用onChanged方法,这个方法可能用于触发一些属性变更后的相关逻辑,比如通知观察者、更新内部缓存等,以确保系统的其他部分能知晓该字段值的变化。 +// 方法返回当前构建器对象,便于进行链式调用,继续设置其他字段或者执行构建操作等,符合构建器模式下设置字段值并保持操作连贯性的设计理念,也遵循了Protobuf中对构建器操作字段的规范要求。 public Builder setField4(int value) { field4_ = value; @@ -1286,37 +1410,33 @@ public final class ChatRoomProto { onChanged(); return this; } - - /** - * int32 field4 = 4; - * - * @return This builder for chaining. - */ + // 重写清除field4字段值的方法,用于将field4字段的值重置为0,并且清除bitField0_中对应field4字段的标记位。 +// 通过位操作(bitField0_ = (bitField0_ & ~0x00000008))实现标记位的清除,将field4_变量赋值为0来重置字段值, +// 然后调用onChanged方法触发属性变更相关逻辑,最后返回当前构建器对象,方便后续继续进行其他构建相关的操作, +// 这符合在构建对象过程中对字段进行重置、恢复到初始状态的需求,遵循了Protobuf规范下构建器对字段管理的操作方式。 public Builder clearField4() { bitField0_ = (bitField0_ & ~0x00000008); field4_ = 0; onChanged(); return this; } - + // 定义一个整型变量roomCapacity_,用于存储ChatRoom对象中名为roomCapacity字段的值,该字段在Protobuf的定义中有其特定的业务含义, +// 后续可通过相应的方法对其进行获取、设置以及清除等操作,以完善ChatRoom对象在构建过程中的属性配置。 private int roomCapacity_; - /** - * int32 roomCapacity = 5; - * - * @return The roomCapacity. - */ + // 重写获取roomCapacity字段值的方法,直接返回存储该字段值的变量roomCapacity_, +// 对外提供了获取这个属性值的统一接口,方便外部代码在业务逻辑中获取该属性的数据,符合类实现相关接口对于属性访问的规范要求, +// 对应了Protobuf中对该字段的定义及访问方式,便于其他代码与之进行交互操作,例如在判断房间容量等业务场景中使用该值。 @Override public int getRoomCapacity() { return roomCapacity_; } - /** - * int32 roomCapacity = 5; - * - * @param value The roomCapacity to set. - * @return This builder for chaining. - */ + // 重写设置roomCapacity字段值的方法,用于将传入的整数值设置为roomCapacity字段的值。 +// 先将传入的整数值赋值给roomCapacity_变量,然后通过位或操作(bitField0_ |= 0x00000010)设置bitField0_中对应roomCapacity字段的标记位,标记该字段已被更新, +// 最后调用onChanged方法触发相关属性变更逻辑,返回当前构建器对象以支持链式调用,方便继续配置其他字段或者执行构建操作, +// 这样实现了按照Protobuf规范对roomCapacity字段值的设置功能,便于在构建ChatRoom对象时灵活设定房间容量相关的属性值。 + public Builder setRoomCapacity(int value) { roomCapacity_ = value; @@ -1325,11 +1445,11 @@ public final class ChatRoomProto { return this; } - /** - * int32 roomCapacity = 5; - * - * @return This builder for chaining. - */ + // 重写清除roomCapacity字段值的方法,用于将roomCapacity字段的值重置为0,并清除bitField0_中对应roomCapacity字段的标记位。 +// 通过位操作(bitField0_ = (bitField0_ & ~0x00000010))清除标记位,再将roomCapacity_变量赋值为0来实现字段值的重置, +// 接着调用onChanged方法触发属性变更后的相关逻辑,最后返回当前构建器对象方便后续操作, +// 此方法符合在构建对象过程中对roomCapacity字段进行重新初始化、恢复到初始状态的需求,遵循Protobuf规范下构建器对字段管理的操作要求。 + public Builder clearRoomCapacity() { bitField0_ = (bitField0_ & ~0x00000010); roomCapacity_ = 0; @@ -1339,22 +1459,16 @@ public final class ChatRoomProto { private int field6_; - /** - * int32 field6 = 6; - * - * @return The field6. - */ + // 定义一个整型变量field6_,用于存储ChatRoom对象中名为field6字段的值,该字段在Protobuf定义中有其特定的用途和语义, +// 后续可通过相关方法对其进行获取、设置以及清除等操作,以完整构建ChatRoom对象并配置其对应属性。 @Override public int getField6() { return field6_; } - /** - * int32 field6 = 6; - * - * @param value The field6 to set. - * @return This builder for chaining. - */ + // 重写获取field6字段值的方法,直接返回存储该字段值的变量field6_, +// 对外提供获取该属性值的接口,方便外部代码在业务逻辑中获取该字段的数据,遵循类实现相关接口对于属性访问的规范要求, +// 对应了Protobuf中对该字段的定义及访问方式,便于代码间的交互使用,比如根据该字段值进行某些条件判断等业务场景。 public Builder setField6(int value) { field6_ = value; @@ -1363,36 +1477,36 @@ public final class ChatRoomProto { return this; } - /** - * int32 field6 = 6; - * - * @return This builder for chaining. - */ + // 重写设置field6字段值的方法,用于将传入的整数值赋给field6_变量,以此更新ChatRoom对象构建器中field6字段的值。 +// 同时通过位或操作(bitField0_ |= 0x00000020)设置bitField0_中对应field6字段的标记位,标记该字段已被设置, +// 最后调用onChanged方法触发相关属性变更逻辑,返回当前构建器对象以支持链式调用,便于继续进行其他构建操作, +// 这样实现了按照Protobuf规范对field6字段值的设置功能,方便在构建ChatRoom对象时配置该字段的具体值 + // 重写清除field6字段值的方法,用于将field6字段的值重置为0,并清除bitField0_中对应field6字段的标记位。 +// 通过位操作(bitField0_ = (bitField0_ & ~0x00000020))清除标记位,然后将field6_变量赋值为0来实现字段值的重置, +// 接着调用onChanged方法触发属性变更后的相关逻辑,最后返回当前构建器对象方便后续构建相关操作, +// 此方法符合在构建对象过程中对field6字段进行重新初始化的需求,遵循Protobuf规范下构建器对字段管理的操作要求。 + public Builder clearField6() { bitField0_ = (bitField0_ & ~0x00000020); field6_ = 0; onChanged(); return this; } - + // 定义一个长整型变量field7_,用于存储ChatRoom对象中名为field7字段的值,该字段在Protobuf定义中有其特定的业务含义和使用场景, +// 后续可通过相应的方法对其进行获取、设置以及清除等操作,以完善ChatRoom对象的属性配置。 private long field7_; - /** - * int64 field7 = 7; - * - * @return The field7. - */ + // 重写获取field7字段值的方法,直接返回存储该字段值的变量field7_, +// 对外提供获取该属性值的接口,方便外部代码在业务逻辑中获取该长整型字段的数据,符合类实现相关接口对于属性访问的规范要求, +// 对应了Protobuf中对该字段的定义及访问方式,便于其他代码根据该字段值进行相应的业务处理,比如涉及到长整型数值比较、计算等场景。 @Override public long getField7() { return field7_; } - - /** - * int64 field7 = 7; - * - * @param value The field7 to set. - * @return This builder for chaining. - */ + // 重写设置field7字段值的方法,用于将传入的长整数值赋给field7_变量,以此更新ChatRoom对象构建器中field7字段的值。 +// 同时通过位或操作(bitField0_ |= 0x00000040)设置bitField0_中对应field7字段的标记位,标记该字段已被更新, +// 最后调用onChanged方法触发相关属性变更逻辑,返回当前构建器对象以支持链式调用,方便继续配置其他字段或者执行构建操作, +// 这样实现了按照Protobuf规范对field7字段值的设置功能,便于在构建ChatRoom对象时设置该长整型字段的具体值。 public Builder setField7(long value) { field7_ = value; @@ -1401,36 +1515,31 @@ public final class ChatRoomProto { return this; } - /** - * int64 field7 = 7; - * - * @return This builder for chaining. - */ + // 重写清除field7字段值的方法,用于将field7字段的值重置为0,并清除bitField0_中对应field7字段的标记位。 +// 通过位操作(bitField0_ = (bitField0_ & ~0x00000040))清除标记位,然后将field7_变量赋值为0L来实现字段值的重置, +// 接着调用onChanged方法触发属性变更后的相关逻辑,最后返回当前构建器对象方便后续构建相关操作, +// 此方法符合在构建对象过程中对field7字段进行重新初始化的需求,遵循Protobuf规范下构建器对字段管理的操作要求。 public Builder clearField7() { bitField0_ = (bitField0_ & ~0x00000040); field7_ = 0L; onChanged(); return this; } - + // 定义一个长整型变量field8_,用于存储ChatRoom对象中名为field8字段的值,该字段在Protobuf定义中有其特定的业务含义和用途, +// 后续可通过相应的方法对其进行获取、设置以及清除等操作,以完整构建ChatRoom对象并配置其对应属性。 private long field8_; - - /** - * int64 field8 = 8; - * - * @return The field8. - */ + // 重写获取field8字段值的方法,直接返回存储该字段值的变量field8_, +// 对外提供获取该属性值的接口,方便外部代码在业务逻辑中获取该长整型字段的数据,符合类实现相关接口对于属性访问的规范要求, +// 对应了Protobuf中对该字段的定义及访问方式,便于其他代码根据该字段值进行相应的业务处理,比如长整型数值的展示、计算等场景。 @Override public long getField8() { return field8_; } - /** - * int64 field8 = 8; - * - * @param value The field8 to set. - * @return This builder for chaining. - */ + // 重写设置field8字段值的方法,用于将传入的长整数值赋给field8_变量,以此更新ChatRoom对象构建器中field8字段的值。 +// 同时通过位或操作(bitField0_ |= 0x00000080)设置bitField0_中对应field8字段的标记位,标记该字段已被更新, +// 最后调用onChanged方法触发相关属性变更逻辑,返回当前构建器对象以支持链式调用,方便继续配置其他字段或者执行构建操作, +// 这样实现了按照Protobuf规范对field8字段值的设置功能,便于在构建ChatRoom对象时设置该长整型字段的具体值。 public Builder setField8(long value) { field8_ = value; @@ -1439,24 +1548,27 @@ public final class ChatRoomProto { return this; } - /** - * int64 field8 = 8; - * - * @return This builder for chaining. - */ + // 重写清除field8字段值的方法,用于将field8字段的值重置为0,并清除bitField0_中对应field8字段的标记位。 +// 通过位操作(bitField0_ = (bitField0_ & ~0x00000080))清除标记位,然后将field8_变量赋值为0L来实现字段值的重置, +// 接着调用onChanged方法触发属性变更后的相关逻辑,最后返回当前构建器对象方便后续构建相关操作, +// 此方法符合在构建对象过程中对field8字段进行重新初始化的需求,遵循Protobuf规范下构建器对字段管理的操作要求。 public Builder clearField8() { bitField0_ = (bitField0_ & ~0x00000080); field8_ = 0L; onChanged(); return this; } - + // 重写设置未知字段(UnknownFieldSet类型)的方法,这里直接调用父类的setUnknownFields方法来完成设置操作, +// 未知字段通常是指在Protobuf消息中,那些接收方不认识或者在当前版本协议中未定义但在网络传输等过程中出现的字段, +// 通过这种方式可以将未知字段的处理委托给父类的实现逻辑,遵循了Protobuf对于处理未知字段的规范要求以及构建器模式下相关方法重写的原则。 @Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); } - + // 重写合并未知字段(UnknownFieldSet类型)的方法,同样直接调用父类的mergeUnknownFields方法来执行合并操作, +// 这使得在处理未知字段时,可以按照父类的逻辑将传入的未知字段集合与当前构建器中已有的未知字段进行合并, +// 符合Protobuf规范下对于未知字段合并处理的要求以及构建器相关方法的设计原则,方便在处理复杂的Protobuf消息(包含未知字段情况)时进行相应操作。 @Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -1467,19 +1579,35 @@ public final class ChatRoomProto { // @@protoc_insertion_point(builder_scope:ChatRoom) } - // @@protoc_insertion_point(class_scope:ChatRoom) - private static final ChatRoom DEFAULT_INSTANCE; + // 这可能是代码生成工具插入代码的标识点(具体取决于使用的Protobuf代码生成相关工具和配置), +// 用于标记构建器(Builder)类的作用域范围相关信息,一般在代码生成和编译等过程中有特定的作用,对代码阅读者来说可以作为一种代码结构和生成来源的提示。 +// @@protoc_insertion_point(builder_scope:ChatRoom) + // 内部静态final的ChatRoom类型的变量DEFAULT_INSTANCE,用于表示ChatRoom类的默认实例对象, +// 它在整个类的多个方法中会被用到,比如作为构建器创建、获取默认对象等操作的基础参照,通常默认实例代表了一种初始的、未设置具体属性值的状态。 + private static final ChatRoom DEFAULT_INSTANCE; + // 静态代码块,用于初始化DEFAULT_INSTANCE变量,创建一个ChatRoom类的实例对象并赋值给DEFAULT_INSTANCE, +// 这个实例对象会作为整个类在一些默认情况下(如获取默认实例、基于默认实例创建构建器等场景)使用的基础对象, +// 通过静态初始化的方式确保在类加载时就完成了默认实例的创建,方便后续随时获取和使用。 static { DEFAULT_INSTANCE = new ChatRoom(); } - + // 静态方法,用于获取ChatRoom类的默认实例对象,直接返回之前静态初始化创建好的DEFAULT_INSTANCE对象, +// 对外提供了一种获取默认对象的统一方式,方便在不同的业务场景中(例如初始化、对比参照等)使用默认实例进行相应的操作, +// 遵循了Protobuf中对于类提供默认实例获取方法的规范要求以及常见的设计模式理念。 public static ChatRoom getDefaultInstance() { return DEFAULT_INSTANCE; } - + // 定义一个私有静态常量PARSER,它是一个实现了com.google.protobuf.Parser接口的匿名内部类实例,用于解析ChatRoom类型的Protobuf消息。 +// 这个解析器的主要作用是从给定的编码输入流(CodedInputStream)以及扩展注册器(ExtensionRegistryLite)中读取数据,构建出ChatRoom对象(可能是部分构建的形式)。 private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { + // 重写parsePartialFrom方法,用于从给定的输入流和扩展注册器中尝试解析出一个部分初始化的ChatRoom对象。 + // 首先创建一个ChatRoom的构建器(Builder)对象,用于逐步构建ChatRoom实例。 + // 然后尝试将输入流中的数据合并到构建器中,如果在合并过程中出现InvalidProtocolBufferException异常(表示协议缓冲区数据格式不正确), + // 则将构建器中已部分构建的ChatRoom对象设置为未完成消息(通过setUnfinishedMessage方法)并重新抛出异常, + // 对于UninitializedMessageException异常(表示消息未完全初始化)以及IOException异常(输入输出相关异常)也做类似处理, + // 最后返回构建器构建出的部分初始化的ChatRoom对象,这个对象后续可能还需要进一步完善或者验证其初始化状态。 @Override public ChatRoom parsePartialFrom( com.google.protobuf.CodedInputStream input, @@ -1499,96 +1627,108 @@ public final class ChatRoomProto { return builder.buildPartial(); } }; - + // 静态方法,用于对外提供获取ChatRoom类型解析器(PARSER)的接口,方便其他代码在需要解析ChatRoom消息时获取到对应的解析器对象, +// 遵循了一种将解析器封装并统一提供访问入口的设计原则,符合Protobuf中对于类型解析相关功能的规范要求。 public static com.google.protobuf.Parser parser() { return PARSER; } - + // 重写获取ChatRoom类型解析器的方法,直接返回之前定义的静态解析器PARSER, +// 这与parser()方法类似,都是为了对外提供获取解析器的途径,可能在不同的继承体系或者接口实现场景下被调用, +// 确保了在整个Protobuf消息处理框架中,可以通过统一的方式获取到用于解析ChatRoom类型消息的解析器。 @Override public com.google.protobuf.Parser getParserForType() { return PARSER; } - + // 重写获取ChatRoom类型默认实例对象的方法,直接返回之前定义的静态默认实例对象DEFAULT_INSTANCE, +// 对外提供获取默认实例的统一方式,方便在不同业务场景中(例如初始化、对比参照等)使用默认实例进行相应操作, +// 符合Protobuf中对于类提供默认实例获取方法的规范要求以及常见的设计模式理念。 @Override public ChatRoom getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } - + // 定义一个接口MemberOrBuilder,它继承自com.google.protobuf.MessageOrBuilder接口,用于表示可以作为Member类型消息的对象或者其构建器的角色, +// 该接口定义了一系列获取Member类型消息中各个字段值的方法,方便外部代码统一地访问Member对象的属性, +// 同时这个接口可以被Member类型及其构建器类型实现,以满足不同场景下对Member消息属性获取的需求,遵循了Protobuf中对于消息和构建器统一访问接口的设计模式。 +// 这里的注释“// @@protoc_insertion_point(interface_extends:Member)”可能是代码生成工具插入代码的标识点,用于标记接口继承相关信息,在代码生成等过程中有特定作用,对代码阅读者来说可作为一种代码结构和生成来源的提示 public interface MemberOrBuilder extends // @@protoc_insertion_point(interface_extends:Member) com.google.protobuf.MessageOrBuilder { - /** - * string wxId = 1; - * - * @return The wxId. - */ + // 定义获取Member消息中wxId字段(字符串类型,对应Protobuf定义中的“string wxId = 1;”)值的方法,对外提供获取该字段值的接口, + // 方便外部代码在业务逻辑中使用这个字段的数据,符合接口定义用于对外暴露属性访问方法的规范要求,便于根据wxId字段值进行相应的业务处理,比如成员标识判断等场景。 + String getWxId(); - /** - * string wxId = 1; - * - * @return The bytes for wxId. - */ + // 定义获取Member消息中wxId字段的字节表示(ByteString类型)的方法,对外提供获取该字段字节数据的接口, + // 在一些需要处理字节数据的场景(比如网络传输、序列化等)下会用到,符合接口对于提供不同形式字段数据访问方法的要求,便于更底层的数据操作。 com.google.protobuf.ByteString getWxIdBytes(); - /** - * string remark = 2; - * - * @return The remark. - */ + // 定义获取Member消息中remark字段(字符串类型,对应Protobuf定义中的“string remark = 2;”)值的方法,对外提供获取该字段值的接口, + // 方便外部代码根据remark字段值进行相应的业务处理,比如成员备注信息展示等场景,遵循接口用于暴露属性访问方法的规范要求。 String getRemark(); - /** - * string remark = 2; - * - * @return The bytes for remark. - */ + // 定义获取Member消息中remark字段的字节表示(ByteString类型)的方法,对外提供获取该字段字节数据的接口, + // 用于在需要字节形式数据的场景下进行操作,符合接口提供多样化字段数据访问方式的设计理念,便于不同层次的数据处理需求。 com.google.protobuf.ByteString getRemarkBytes(); - - /** - * int32 state = 3; - * - * @return The state. - */ + // 定义获取Member消息中state字段(int32类型,对应Protobuf定义中的“int32 state = 3;”)值的方法, + // 对外提供获取 int getState(); } - /** - * Protobuf type {@code Member} - */ + // 定义一个名为Member的静态内部类,它继承自com.google.protobuf.GeneratedMessageV3类,同时实现了MemberOrBuilder接口。 +// 这个类用于表示在Protobuf消息定义中的Member类型,包含了该类型的各种属性以及对应的访问、操作方法,遵循了Protobuf的消息对象定义规范以及Java中面向对象的设计模式。 +// 这里的注释“// @@protoc_insertion_point(message_implements:Member)”可能是代码生成工具插入代码的标识点,用于标记类实现相关信息,在代码生成和编译等过程中有特定作用,对代码阅读者来说可作为一种代码结构和生成来源的提示。 public static final class Member extends com.google.protobuf.GeneratedMessageV3 implements // @@protoc_insertion_point(message_implements:Member) MemberOrBuilder { + // 定义一个序列化版本号,用于在对象序列化和反序列化过程中确保版本兼容性,这里初始化为0L, + // 当类的结构发生变化(如添加、删除字段等)时,可能需要相应地更新这个版本号,以避免在不同版本的代码间进行序列化和反序列化操作时出现问题。 private static final long serialVersionUID = 0L; + // Use Member.newBuilder() to construct. + + // 私有构造函数,接收一个GeneratedMessageV3.Builder类型的构建器作为参数,用于通过构建器来创建Member对象, + // 构造函数内部调用父类(GeneratedMessageV3)的构造函数,传入给定的构建器进行初始化, + // 这种基于构建器创建对象的方式符合Protobuf中通过构建器模式来构建消息对象的规范要求,方便在创建对象时逐步设置属性等操作。 + // 同时,外部一般不直接调用这个构造函数,而是通过推荐的方式(如Member.newBuilder())来创建Member对象。 // Use Member.newBuilder() to construct. private Member(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - + // 私有默认构造函数,用于创建一个初始状态的Member对象,在这个构造函数中,将wxId_和remark_字段初始化为空字符串, + // 可能还有其他字段(如state_等)也会设置为默认值(这里state_初始化为0),这种默认构造函数方便在一些场景下创建具有初始默认属性值的对象, + // 比如在从默认配置或者初始状态开始构建Member对象时会用到。 private Member() { wxId_ = ""; remark_ = ""; } - + // 重写newInstance方法,这个方法用于创建一个新的Member对象实例, + // 虽然传入了一个UnusedPrivateParameter类型的未使用参数(通过注解@SuppressWarnings({"unused"})抑制了未使用参数的警告), + // 但方法内部只是简单地返回一个新的Member对象,在一些基于反射或者特定的对象创建机制中可能会调用到这个方法来创建Member类型的实例, + // 符合GeneratedMessageV3类对于创建实例方法的规范要求以及整体的设计模式。 @Override @SuppressWarnings({"unused"}) protected Object newInstance( UnusedPrivateParameter unused) { return new Member(); } - + // 静态方法,用于获取Member类型对应的Protobuf描述符(Descriptor), + // 通过调用ChatRoomProto内部静态的Member_descriptor来获取描述符, + // 这个描述符包含了Member类型在Protobuf中的各种元数据信息,如字段定义、类型、顺序等, + // 在进行对象的序列化、反序列化以及各种属性访问、验证等操作时会依赖这些描述符信息,确保操作符合Protobuf的规范要求。 public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return ChatRoomProto.internal_static_Member_descriptor; } - + // 重写获取字段访问器表(FieldAccessorTable)的方法,用于获取与Member类及其构建器(Builder)相关的字段访问器表。 + // 通过调用ChatRoomProto内部静态的Member_fieldAccessorTable的ensureFieldAccessorsInitialized方法,传入Member类和其构建器类作为参数, + // 来确保字段访问器已正确初始化并返回对应的访问器表,这个访问器表在访问对象的各个字段时起到关键作用, + // 可以根据字段名等信息快速定位并访问对应的字段,遵循了Protobuf中对于高效字段访问的设计机制以及GeneratedMessageV3类的相关要求。 @Override protected FieldAccessorTable internalGetFieldAccessorTable() { @@ -1596,16 +1736,20 @@ public final class ChatRoomProto { .ensureFieldAccessorsInitialized( Member.class, Builder.class); } - + // 定义一个常量,表示wxId字段在Protobuf消息定义中的字段编号(field number),这里对应的值为1, + // 在Protobuf中,每个字段都有一个唯一的编号,用于在序列化、反序列化以及消息解析等过程中标识该字段, + // 方便进行字段的定位和处理。 public static final int WXID_FIELD_NUMBER = 1; @SuppressWarnings("serial") + // 定义一个易变(volatile)的Object类型变量wxId_,用于存储wxId字段的值,初始化为空字符串, + // 使用volatile关键字可以保证在多线程环境下该变量的可见性,即一个线程对该变量的修改能及时被其他线程看到, + // 虽然这里定义为Object类型,但在实际使用中会根据具体情况转换为对应的字符串或者ByteString类型来存储和操作wxId字段的值, + // 这是一种在Protobuf消息对象中处理可能有不同表示形式字段值的一种常见方式。 private volatile Object wxId_ = ""; - - /** - * string wxId = 1; - * - * @return The wxId. - */ + // 重写获取wxId字段值(字符串类型)的方法,用于从wxId_变量中获取并返回对应的字符串值。 + // 首先获取wxId_变量的引用,然后判断其实际类型,如果是字符串类型,直接返回该字符串; + // 如果是ByteString类型,则调用其toStringUtf8方法将字节数据转换为字符串,同时将wxId_变量更新为转换后的字符串,再返回该字符串, + // 这样就实现了根据实际存储情况正确获取wxId字段字符串值的功能,方便外部代码在业务逻辑中使用该字段的数据,符合Protobuf对于字段值获取的规范要求。 @Override public String getWxId() { Object ref = wxId_; @@ -1620,11 +1764,10 @@ public final class ChatRoomProto { } } - /** - * string wxId = 1; - * - * @return The bytes for wxId. - */ + // 重写获取wxId字段值的字节表示(ByteString类型)的方法,用于从wxId_变量中获取并返回对应的ByteString对象。 + // 首先获取wxId_变量的引用,若其为字符串类型,则通过ByteString的copyFromUtf8方法将字符串转换为ByteString对象, + // 同时更新wxId_变量为转换后的ByteString对象,再返回该对象;如果wxId_本身就是ByteString类型,则直接返回它, + // 此方法方便在需要字节形式数据的场景(如网络传输、序列化等)下获取wxId字段的字节表示,符合Protobuf对于提供不同形式字段数据访问的规范要求。 @Override public com.google.protobuf.ByteString getWxIdBytes() { @@ -1639,16 +1782,15 @@ public final class ChatRoomProto { return (com.google.protobuf.ByteString) ref; } } - + // 定义一个常量,表示remark字段在Protobuf消息定义中的字段编号,对应的值为2, + // 用于在消息处理过程中唯一标识remark字段,方便进行诸如序列化、反序列化以及字段值获取、设置等相关操作,遵循Protobuf的字段编号规范。 public static final int REMARK_FIELD_NUMBER = 2; @SuppressWarnings("serial") private volatile Object remark_ = ""; - /** - * string remark = 2; - * - * @return The remark. - */ + // 定义一个易变(volatile)的Object类型变量remark_,用于存储remark字段的值,初始化为空字符串, + // 与wxId_类似,使用volatile保证多线程环境下的可见性,并且根据实际情况在字符串和ByteString类型间转换来存储和操作remark字段的值, + // 以满足不同场景下对remark字段数据的处理需求,符合Protobuf消息对象中字段值存储和操作的设计模式。 @Override public String getRemark() { Object ref = remark_; @@ -1663,11 +1805,9 @@ public final class ChatRoomProto { } } - /** - * string remark = 2; - * - * @return The bytes for remark. - */ + // 重写获取remark字段值(字符串类型)的方法,从remark_变量中获取并返回对应的字符串值,逻辑与获取wxId字段字符串值的方法类似。 + // 先获取变量引用,判断类型,若是字符串则直接返回,若是ByteString类型则转换为字符串并更新变量后返回, + // 方便外部代码获取remark字段的字符串内容用于业务逻辑处理,例如展示成员备注信息等场景,符合Protobuf对于字段值获取的规范要求。 @Override public com.google.protobuf.ByteString getRemarkBytes() { @@ -1686,18 +1826,25 @@ public final class ChatRoomProto { public static final int STATE_FIELD_NUMBER = 3; private int state_ = 0; - /** - * int32 state = 3; - * - * @return The state. - */ + // 重写获取remark字段值的字节表示(ByteString类型)的方法,从remark_变量中获取并返回对应的ByteString对象,逻辑与获取wxId字段字节表示的方法类似。 + // 根据变量实际存储类型进行相应转换或直接返回操作,以提供remark字段的字节数据,方便在需要字节形式数据的场景下使用, + // 符合Protobuf对于提供多样化字段数据访问方式的规范要求,满足不同层次的数据处理需求。 @Override + // 定义一个常量,表示state字段在Protobuf消息定义中的字段编号,其值为3, + // 用于在消息处理过程中明确标识state字段,方便后续对该字段进行诸如赋值、获取值等操作,遵循Protobuf中字段编号的统一规范。 public int getState() { return state_; } + // 定义一个整型变量state_,用于存储state字段的值,初始化为0, + // 这个字段在Protobuf消息定义中有其特定的业务含义(具体含义取决于具体的业务逻辑和Protobuf消息设计), + // 后续可通过相应的方法对其进行获取、设置等操作,以完整地表示和处理Member类型对象中state字段相关的信息。 private byte memoizedIsInitialized = -1; - + // 重写isInitialized方法,用于判断当前Member对象是否已初始化。 +// 首先尝试从缓存的初始化状态变量(memoizedIsInitialized)获取状态,若其值为1,表示已初始化,直接返回true;若值为0,表示未初始化,直接返回false。 +// 如果缓存变量的值不是0或1(可能是初始状态等情况),则将缓存变量设置为1,表示已初始化,然后返回true。 +// 这种通过缓存变量来快速判断初始化状态的方式可以避免重复的复杂初始化检查逻辑,提高性能, +// 同时遵循了Protobuf对于对象初始化状态判断的规范要求。 @Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; @@ -1707,7 +1854,14 @@ public final class ChatRoomProto { memoizedIsInitialized = 1; return true; } - + // 重写writeTo方法,用于将Member对象的内容序列化并写入到给定的CodedOutputStream中, + // 过程中可能抛出IOException异常用于处理写入过程中的错误情况。 +// 首先检查wxId_字段是否为空字符串(通过GeneratedMessageV3的isStringEmpty方法判断),若不为空, +// 则调用GeneratedMessageV3的writeString方法将wxId_字段按照字段编号1写入输出流。 +// 接着同样检查remark_字段,若不为空,则按照字段编号2将其写入输出流。 +// 然后判断state_字段的值是否不为0,若是,则将state_字段(int32类型)按照字段编号3写入输出流。 +// 最后,将未知字段(通过getUnknownFields方法获取)的内容也写入到输出流中,确保整个Member对象(包括已知字段和未知字段)都能正确地序列化并输出, +// 符合Protobuf的序列化规范要求。 @Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { @@ -1722,6 +1876,15 @@ public final class ChatRoomProto { } getUnknownFields().writeTo(output); } + // 重写equals方法,用于比较当前Member对象与传入的另一个对象是否相等。 +// 首先判断传入的对象是否就是当前对象(即内存地址相同),若是,则直接返回true。 +// 接着判断传入的对象是否不是Member类型,如果不是,则调用父类的equals方法进行比较 +// (可能按照父类的比较逻辑处理不同类型对象的比较情况)。 +// 如果传入的对象是Member类型,则将其强制转换为Member类型(other) +// 然后依次比较各个字段,包括wxId、remark、state字段以及未知字段,只要有一个字段不相等 +// 则返回false,只有所有字段都相等时才返回true, +// 这样实现了按照Member对象的各个属性来准确判断两个对象是否相等的功能, +// 符合Java中重写equals方法的规范以及Protobuf对于对象相等性判断的要求。 @Override public int getSerializedSize() { @@ -1743,7 +1906,16 @@ public final class ChatRoomProto { memoizedSize = size; return size; } - + // 重写hashCode方法,用于生成当前Member对象的哈希码值。 +// 首先检查缓存的哈希码变量(memoizedHashCode)是否不为0,如果不为0,表示已经计算过哈希码, +// 则直接返回该缓存的哈希码值。 +// 如果缓存变量为0(初始状态或者需要重新计算的情况),则开始计算哈希码。 +// 先将一个初始值41赋给hash变量,然后通过一系列计算,依次将描述符的哈希码、各个字段的相关信息 +// (包括字段编号、字段值的哈希码等)以及未知字段的哈希码按照一定的权重(如19、37、53、29等系数)累加到hash变量中, +// 最后将计算好的hash值赋给缓存变量memoizedHashCode,并返回该哈希码值, +// 这样生成的哈希码能够根据Member对象的关键属性来唯一标识该对象(在一定程度上), +// 符合Java中重写hashCode方法的规范以及Protobuf对于对象哈希码生成的要求 +// ,方便在基于哈希的集合(如HashMap等)中使用Member对象 @Override public boolean equals(final Object obj) { if (obj == this) { @@ -1781,51 +1953,69 @@ public final class ChatRoomProto { memoizedHashCode = hash; return hash; } - + // 静态方法,用于从给定的ByteBuffer类型的数据中解析出一个Member对象,内部直接调用之前定义的PARSER(解析器)的parseFrom方法来完成解析操作, +// 若解析过程中数据不符合Protobuf的协议格式,会抛出InvalidProtocolBufferException异常, +// 方便在处理ByteBuffer形式的序列化数据时快速创建Member对象,遵循Protobuf对于解析对象的规范要求 public static Member parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - + // 静态方法,用于从给定的ByteBuffer类型的数据以及对应的ExtensionRegistryLite类型的扩展注册器中解析出一个Member对象, +// 通过调用PARSER的parseFrom方法并传入相应参数来完成解析,扩展注册器用于处理可能包含扩展类型的Protobuf消息, +// 若解析出现协议格式问题,会抛出InvalidProtocolBufferException异常, +// 便于在需要处理扩展类型的情况下从ByteBuffer数据中解析Member对象,符合Protobuf的解析规范。 public static Member parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - + // 静态方法,用于从给定的ByteString类型的数据中解析出一个Member对象,同样是调用PARSER的parseFrom方法来进行解析, +// 在处理ByteString形式的序列化数据时,若数据不符合协议格式, +// 会抛出InvalidProtocolBufferException异常,以此来创建Member对象,遵循Protobuf的解析机制。 public static Member parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - + // 静态方法,用于从给定的ByteString类型的数据以及对应的ExtensionRegistryLite类型的扩展注册器中解析出一个Member对象, +// 借助PARSER的parseFrom方法并传入相应参数完成解析,在面对可能包含扩展类型的ByteString数据时,若解析出现问题,会抛出相应异常, +// 符合Protobuf在处理带扩展类型数据解析的规范要求,方便从ByteString数据中正确解析出Member对象。 public static Member parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - + // 静态方法,用于从给定的字节数组(byte[])类型的数据中解析出一个Member对象,调用PARSER的parseFrom方法进行解析, +// 若字节数组数据不符合Protobuf协议格式,会抛出InvalidProtocolBufferException异常, +// 方便在以字节数组形式存储序列化数据的场景下创建Member对象,遵循Protobuf的解析规范。 public static Member parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - + // 静态方法,用于从给定的字节数组(byte[])类型的数据以及对应的ExtensionRegistryLite类型的扩展注册器中解析出一个Member对象, +// 通过PARSER的parseFrom方法结合扩展注册器参数来完成解析,在处理可能涉及扩展类型的字节数组数据时,若解析出现格式问题,会抛出相应异常, public static Member parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - + // 静态方法,用于从给定的普通输入流(java.io.InputStream)中解析出一个Member对象。 +// 它借助了com.google.protobuf.GeneratedMessageV3类的parseWithIOException方法,将之前定义的用于Member类型的解析器(PARSER)和输入流作为参数传入, +// 由于涉及到输入流的读取操作,所以可能会抛出java.io.IOException异常,用于处理在解析过程中出现的输入输出相关错误情况, +// 这种方式符合Protobuf规范中从常规输入流解析对象的要求,方便在使用普通输入流来获取序列化的Member对象数据时进行解析操作。 public static Member parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - + // 静态方法,用于从给定的输入流(java.io.InputStream)以及对应的扩展注册器(ExtensionRegistryLite类型)中解析出一个Member对象。 +// 通过调用com.google.protobuf.GeneratedMessageV3类的parseWithIOException方法,并传入解析器(PARSER)、输入流和扩展注册器作为参数来完成解析操作。 +// 扩展注册器用于处理可能包含扩展类型的Protobuf消息,在解析过程中如果出现输入输出相关错误或者协议格式不符合要求的情况,会抛出java.io.IOException或者com.google.protobuf.InvalidProtocolBufferException异常, +// 该方法遵循了Protobuf对于解析包含扩展类型消息的规范,方便在处理这类较复杂的输入流数据时正确解析出Member对象。 public static Member parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -1833,13 +2023,19 @@ public final class ChatRoomProto { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - + // 静态方法,用于从给定的输入流(java.io.InputStream)中解析出一个以定界形式(delimited)存在的Member对象。 +// 这里调用了com.google.protobuf.GeneratedMessageV3类的parseDelimitedWithIOException方法,将解析器(PARSER)和输入流作为参数传入, +// 定界形式意味着数据在流中有特定的边界标识来区分不同的对象,在解析过程中由于涉及输入流操作,可能会抛出java.io.IOException异常, +// 此方法符合Protobuf对于解析定界形式数据的相关规范,方便在处理这种特殊格式的输入流数据时获取Member对象。 public static Member parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } - + // 静态方法,用于从给定的输入流(java.io.InputStream)以及对应的扩展注册器(ExtensionRegistryLite类型)中解析出一个以定界形式(delimited)存在的Member对象。 +// 借助com.google.protobuf.GeneratedMessageV3类的parseDelimitedWithIOException方法,传入解析器(PARSER)、输入流和扩展注册器作为参数来完成解析, +// 在处理可能包含扩展类型且为定界形式的输入流数据时,如果出现输入输出相关错误或者协议格式不符合要求的情况,会抛出java.io.IOException或者com.google.protobuf.InvalidProtocolBufferException异常, +// 遵循了Protobuf对于处理这类特殊情况数据解析的规范要求,便于从相应的输入流数据中正确解析出Member对象。 public static Member parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -1847,14 +2043,23 @@ public final class ChatRoomProto { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - + // 静态方法,用于从给定的编码输入流(com.google.protobuf.CodedInputStream)中解析出一个Member对象。 +// 通过调用com.google.protobuf.GeneratedMessageV3类的parseWithIOException方法,并传入解析器(PARSER)和编码输入流作为参数来进行解析, +// 由于涉及到输入流的读取操作,可能会抛出java.io.IOException异常以处理解析过程中出现的输入输出相关错误, +// 这种方式符合Protobuf规范中从编码输入流这种更底层、更符合内部数据格式的输入形式下解析对象的要求, +// 方便在特定场景下从编码输入流获取Member对象。 public static Member parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - + // 静态方法,用于从给定的编码输入流(com.google.protobuf.CodedInputStream)以及对应的扩展注册器(ExtensionRegistryLite类型)中解析出一个Member对象。 +// 调用com.google.protobuf.GeneratedMessageV3类的parseWithIOException方法, +// 传入解析器(PARSER)、编码输入流和扩展注册器作为参数来完成解析操作, +// 在处理可能包含扩展类型的编码输入流数据时,如果出现输入输出相关错误或者协议格式不符合要求的情况, +// 会抛出java.io.IOException或者com.google.protobuf.InvalidProtocolBufferException异常, +// 遵循了Protobuf对于处理这类特殊格式输入流数据解析的规范要求,便于从编码输入流中正确解析出Member对象。 public static Member parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) @@ -1862,45 +2067,72 @@ public final class ChatRoomProto { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - + // 重写创建用于构建当前类型(Member)对象的构建器(Builder)的方法, + // 该方法直接返回通过newBuilder方法创建的构建器, +// 这是一种按照Protobuf构建器模式规范提供创建构建器的统一方式, +// 方便后续通过构建器来构建Member对象或者对其进行修改等操作, +// 符合Protobuf对于对象构建相关的设计原则。 @Override public Builder newBuilderForType() { return newBuilder(); } - + // 静态方法,用于创建一个用于构建Member对象的构建器(Builder)。 +// 通过获取Member类型的默认实例(DEFAULT_INSTANCE)并调用其toBuilder方法来创建构建器, +// 这样创建的构建器可以基于默认实例的初始状态进行后续的属性设置等操作, +// 方便快捷地创建Member对象,符合Protobuf构建器模式下创建构建器的常见方式和规范要求。 public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - + // 静态方法,用于创建一个用于构建Member对象的构建器(Builder),传入一个已有的Member对象原型(prototype)。 +// 首先通过获取默认实例的构建器(DEFAULT_INSTANCE.toBuilder()),再调用其mergeFrom方法将原型对象的属性合并到构建器中, +// 使得创建的构建器可以基于给定的原型对象的状态进行进一步修改和构建操作,方便在已有对象基础上创建相似的新对象, +// 遵循Protobuf构建器模式下基于原型创建构建器的规范要求。 public static Builder newBuilder(Member prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } - + // 重写将当前对象转换为对应的构建器(Builder)的方法,判断当前对象是否为默认实例(DEFAULT_INSTANCE), +// 如果是,则创建一个新的构建器;如果不是,则创建一个新的构建器并通过mergeFrom方法将当前对象的属性合并到构建器中, +// 这样可以方便地从已有的Member对象获取对应的构建器,便于后续对该对象进行修改等操作, +// 符合Protobuf构建器模式下对象与构建器相互转换的规范要求。 @Override public Builder toBuilder() { return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); } - + // 重写创建用于构建当前类型(Member)对象的构建器(Builder)的方法,接收一个BuilderParent类型的父对象作为参数, +// 创建一个新的Builder对象,并将传入的父对象传递给构造函数进行初始化,最后返回创建好的构建器, +// 这种方式在构建器的层次结构或者涉及到父级相关操作(例如与父级对象的状态关联等)时会用到, +// 符合Protobuf构建器模式下特定构建器创建的规范要求。 @Override protected Builder newBuilderForType( BuilderParent parent) { Builder builder = new Builder(parent); return builder; } - - /** - * Protobuf type {@code Member} - */ + // 定义一个名为Builder的静态内部类, + // 它继承自com.google.protobuf.GeneratedMessageV3.Builder类,同时实现了MemberOrBuilder接口。 +// 这个类用于构建Member对象,提供了一系列设置、清除字段以及构建最终Member对象等方法,遵循了Protobuf构建器模式的规范要求以及Java中面向对象的设计模式。 +// 这里的注释“// @@protoc_insertion_point(builder_implements:Member)”可能是代码生成工具插入代码的标识点,用于标记类实现相关信息, +// 在代码生成和编译等过程中有特定作用,对代码阅读者来说可作为一种代码结构和生成来源的提示。 public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:Member) MemberOrBuilder { + // 静态方法,用于获取Member类型对应的Protobuf描述符(Descriptor), + // 通过调用ChatRoomProto内部静态的Member_descriptor来获取描述符, + // 这个描述符包含了Member类型在Protobuf中的各种元数据信息,如字段定义、类型、顺序等, + // 在进行构建器相关的操作(如字段访问、验证等)时会依赖这些描述符信息,确保操作符合Protobuf的规范要求。 public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return ChatRoomProto.internal_static_Member_descriptor; } + // 重写获取字段访问器表(FieldAccessorTable)的方法,用于获取与Member类及其构建器(Builder)相关的字段访问器表。 + // 通过调用ChatRoomProto内部静态的Member_fieldAccessorTable的ensureFieldAccessorsInitialized方法, + // 传入Member类和其构建器类作为参数, + // 来确保字段访问器已正确初始化并返回对应的访问器表,这个访问器表在访问构建器中各个字段时起到关键作用, + // 可以根据字段名等信息快速定位并访问对应的字段, + // 遵循了Protobuf中对于高效字段访问的设计机制以及GeneratedMessageV3类的相关要求。 @Override protected FieldAccessorTable internalGetFieldAccessorTable() { @@ -1908,18 +2140,26 @@ public final class ChatRoomProto { .ensureFieldAccessorsInitialized( Member.class, Builder.class); } - + // 私有默认构造函数,用于创建一个初始状态的构建器对象,这里可能没有进行过多的初始化操作(构造函数体为空), + // 后续可以通过其他设置方法来逐步设置构建器的状态以及要构建的Member对象的属性,符合构建器模式中先创建一个基础构建器,再按需配置的设计理念。 // Construct using ChatRoomProto.Member.newBuilder() + private Builder() { } - + // 私有构造函数,接收一个BuilderParent类型的父对象作为参数,用于创建一个与父对象相关联的构建器对象, + // 先调用父类(GeneratedMessageV3.Builder)的构造函数,传入父对象进行初始化, + // 这种构造方式在构建器存在父子层次关系或者需要与父对象进行状态交互等场景下会用到, + // 遵循Protobuf构建器模式下特定构造要求。 private Builder( BuilderParent parent) { super(parent); } - + // 重写清除构建器状态的方法,首先调用父类的clear方法来清除父类相关的状态信息, + // 然后将构建器中用于标记字段状态等的位字段(bitField0_)重置为0 + // ,同时将wxId_、remark_字段初始化为空字符串,state_字段初始化为0, + // 这样就将构建器恢复到了初始状态,方便后续重新设置字段等操作,符合构建器模式下重置构建器状态的规范要求。 @Override public Builder clear() { super.clear(); @@ -1929,18 +2169,28 @@ public final class ChatRoomProto { state_ = 0; return this; } - + // 重写获取当前构建器所构建对象类型对应的Protobuf描述符(Descriptor)的方法, + // 直接返回ChatRoomProto内部静态的Member_descriptor作为描述符, + // 这个描述符用于定义和描述Member类型在Protobuf中的结构信息, + // 在构建过程中可用于字段验证、访问等操作,遵循Protobuf规范要求。 @Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { return ChatRoomProto.internal_static_Member_descriptor; } - + // 重写获取当前构建器所构建对象类型(Member)的默认实例对象的方法, + // 通过调用Member类的getDefaultInstance方法获取默认实例, + // 这个默认实例可以作为一种参考或者初始状态的对比对象,在构建过程中可能会用到, + // 符合Protobuf构建器模式下对于默认实例获取的规范要求。 @Override public Member getDefaultInstanceForType() { return Member.getDefaultInstance(); } - + // 重写构建完整Member对象的方法,首先调用buildPartial方法构建一个部分初始化的Member对象, + // 然后检查该部分初始化的对象是否已完全初始化(通过isInitialized方法判断), + // 如果没有完全初始化,则抛出一个表示未初始化消息的异常(newUninitializedMessageException), + // 只有当对象完全初始化后,才返回构建好的Member对象, + // 这样可以确保构建出的对象符合Protobuf对于完整性的要求,避免返回一个不完整的对象。 @Override public Member build() { Member result = buildPartial(); @@ -1949,7 +2199,13 @@ public final class ChatRoomProto { } return result; } - + // 重写构建部分初始化的Member对象的方法,首先创建一个Member对象,将当前构建器(this)作为参数传入其构造函数进行初始化, + // 然后判断构建器中的位字段(bitField0_)是否不为0,如果不为0, + // 说明有一些字段需要进一步处理,调用buildPartial0方法来设置Member对象的相关字段值, + // 最后调用onBuilt方法(可能用于触发一些构建完成后的相关逻辑,比如通知观察者等), + // 并返回构建好的部分初始化的Member对象, + // 这种逐步构建对象并根据构建器状态设置字段的方式符合Protobuf构建器模式下构建对象的规范要求, + // 方便在复杂场景下灵活构建Member对象。 @Override public Member buildPartial() { Member result = new Member(this); @@ -1959,7 +2215,11 @@ public final class ChatRoomProto { onBuilt(); return result; } - + // 私有方法,用于根据构建器中的位字段(bitField0_)状态来设置Member对象的相关字段值。 + // 首先获取构建器中的位字段值(from_bitField0_),然后通过位与操作判断各个位对应的字段是否需要设置, + // 如果对应位不为0,则将Member对象的相应字段(如wxId_、remark_、state_等)设置为构建器中对应的值, + // 这样实现了根据构建器状态准确设置Member对象字段的功能, + // 符合构建器模式下基于构建器内部状态构建对象的设计思路。 private void buildPartial0(Member result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -1972,37 +2232,57 @@ public final class ChatRoomProto { result.state_ = state_; } } - + // 重写克隆构建器的方法,直接调用父类的clone方法来克隆当前构建器对象, + // 克隆后的构建器会具有与原构建器相同的初始状态和属性设置, + // 方便在需要创建一个相似但独立的构建器副本的场景下使用, + // 遵循Java中克隆对象的规范以及Protobuf构建器模式下相关操作的要求。 @Override public Builder clone() { return super.clone(); } - + // 重写设置指定字段值的方法,调用父类的setField方法, + // 将指定的字段描述符(FieldDescriptor)和要设置的值作为参数传入, + // 由父类的方法根据字段描述符来确定如何设置对应字段的值, + // 这种方式遵循了Protobuf构建器模式下通过字段描述符统一设置字段值的规范要求,便于处理各种类型的字段设置操作。 @Override public Builder setField( com.google.protobuf.Descriptors.FieldDescriptor field, Object value) { return super.setField(field, value); } - + // 重写清除指定字段值的方法,调用父类的clearField方法, + // 传入要清除的字段描述符(FieldDescriptor)作为参数, + // 由父类的方法根据字段描述符来执行清除对应字段值的操作, + // 符合Protobuf构建器模式下通过字段描述符统一管理字段清除操作的规范要求,方便在构建过程中重置特定字段的值。 @Override public Builder clearField( com.google.protobuf.Descriptors.FieldDescriptor field) { return super.clearField(field); } + // 重写清除指定Oneof字段(OneofDescriptor表示)的方法, + // 调用父类的clearOneof方法,传入要清除的Oneof字段描述符作为参数, + // 由父类的方法根据描述符来执行清除对应Oneof @Override public Builder clearOneof( com.google.protobuf.Descriptors.OneofDescriptor oneof) { return super.clearOneof(oneof); } - + // 重写设置重复字段值的方法,这里直接调用父类的setRepeatedField方法 + // ,传入字段描述符(FieldDescriptor)、索引(index)以及要设置的值(Object类型)作为参数。 +// 通过父类的相应逻辑来处理如何在构建器中针对指定索引位置设置重复字段的值, +// 遵循了Protobuf构建器模式下利用字段描述符统一操作重复字段的规范要求, +// 方便在处理包含重复字段的消息构建时进行精准赋值操作。 @Override public Builder setRepeatedField( com.google.protobuf.Descriptors.FieldDescriptor field, int index, Object value) { return super.setRepeatedField(field, index, value); } + // 重写添加重复字段值的方法,同样直接调用父类的addRepeatedField方法, + // 将字段描述符(FieldDescriptor)和要添加的值(Object类型)作为参数传入。 +// 由父类的逻辑来处理如何把给定的值添加到对应的重复字段中, +// 符合Protobuf构建器模式下对重复字段添加元素的操作规范,便于在构建对象时向重复字段里添加新的数据内容。 @Override public Builder addRepeatedField( @@ -2010,7 +2290,12 @@ public final class ChatRoomProto { Object value) { return super.addRepeatedField(field, value); } - + // 重写合并消息的方法,用于将另一个Protobuf消息(other)合并到当前构建器所构建的消息中。 +// 首先判断传入的消息(other)是否是Member类型,如果是, +// 则调用专门针对Member类型的mergeFrom方法(即下面定义的mergeFrom(Member other)方法)进行合并; +// 如果不是Member类型,则调用父类的mergeFrom方法按照父类的逻辑来处理合并操作,最后返回当前构建器对象, +// 方便进行链式调用,继续其他构建相关操作, +// 这样实现了根据不同类型消息灵活选择合适的合并逻辑,遵循Protobuf构建器模式下消息合并的规范要求。 @Override public Builder mergeFrom(com.google.protobuf.Message other) { if (other instanceof Member) { @@ -2020,7 +2305,19 @@ public final class ChatRoomProto { return this; } } - + // 定义针对Member类型消息合并的方法,用于将给定的Member对象(other)的属性合并到当前构建器中。 +// 首先判断传入的Member对象是否是默认实例(通过Member.getDefaultInstance()判断), +// 若是,则直接返回当前构建器,因为默认实例不需要进行额外合并操作。 +// 接着检查other对象的wxId字段是否不为空字符串, +// 如果不为空,则将当前构建器中的wxId_字段设置为other对象的wxId_字段值,同时通过位或操作(bitField0_ |= 0x00000001)设置对应的位字段标记,表示wxId字段已被设置,然后调用onChanged方法(可能用于触发字段变更后的相关逻辑)。 +// 类似地,对remark字段进行同样的操作,如果不为空, +// 则更新remark_字段值、设置对应位字段标记并调用onChanged方法。 +// 再判断other对象的state字段值是否不为0, +// 如果是,则调用setState方法(此处未展示,应该是用于设置state字段值的方法)来设置当前构建器中的state_字段值。 +// 最后,调用mergeUnknownFields方法将other对象的未知字段合并到当前构建器中, +// 并再次调用onChanged方法,然后返回当前构建器对象,方便后续继续构建操作, +// 这种按字段逐个合并属性以及处理未知字段的方式,符合Protobuf构建器模式下合并同类型对象属性的规范要求, +// 可确保构建器能正确整合不同来源的Member对象信息。 public Builder mergeFrom(Member other) { if (other == Member.getDefaultInstance()) return this; if (!other.getWxId().isEmpty()) { @@ -2040,11 +2337,34 @@ public final class ChatRoomProto { onChanged(); return this; } + // 重写判断当前构建器是否已初始化的方法,这里直接返回true,表示当前构建器始终处于已初始化状态。 +// 具体是否真的符合业务上的初始化要求可能取决于实际应用场景中对于初始化的定义以及其他相关逻辑, +// 不过在当前代码实现中简单地认定为已初始化, +// 遵循了Protobuf构建器模式下对于初始化状态判断方法重写的规范要求(虽然这里的实现相对简单直接)。 @Override public final boolean isInitialized() { return true; } + // 重写从编码输入流(CodedInputStream)以及扩展注册器(ExtensionRegistryLite)中合并数据到当前构建器的方法,过程中可能抛出IOException异常用于处理输入输出相关的错误情况。 +// 首先检查扩展注册器是否为null,如果是null,则抛出NullPointerException异常, +// 确保扩展注册器有效,因为它在处理可能的扩展类型数据时是必需的。 +// 然后进入一个循环,通过input.readTag方法读取输入流中的标签(tag),根据不同的标签值进行不同的操作: +// - 当标签值为0时,表示读取到了流的末尾,将循环结束标志(done)设置为true,结束循环。 +// - 当标签值为10时,对应着读取一个字符串类型的字段(按照Protobuf的标签编码规则,这里应该是对应wxId字段) +// ,通过input.readStringRequireUtf8方法读取字符串并赋值给wxId_字段, +// 同时通过位或操作(bitField0_ |= 0x00000001)设置对应的位字段标记, +// 表示wxId字段已被更新,然后跳出当前case分支。 +// - 当标签值为18时,类似地,对应读取remark字段(同样根据编码规则推测), +// 读取字符串并更新remark_字段,设置相应位字段标记后跳出分支。 +// - 当标签值为24时,对应读取一个int32类型的字段(推测为state字段), +// 通过input.readInt32方法读取整数值并赋值给state_字段,同时设置对应的位字段标记。 +// - 对于其他标签值,调用父类的parseUnknownField方法尝试解析未知字段, +// 如果该方法返回false,表示遇到了结束组(endgroup)标签,将循环结束标志设置为true来结束循环。 +// 最后,无论是否出现异常,都会执行finally块中的onChanged方法(用于触发一些合并数据后的相关逻辑, +// 比如更新内部状态等),然后返回当前构建器对象,方便后续继续构建相关操作, +// 这样实现了从输入流中按照Protobuf的编码规则解析并合并数据到构建器的功能, +// 符合Protobuf构建器模式下从流中读取数据构建对象的规范要求。 @Override public Builder mergeFrom( @@ -2092,16 +2412,23 @@ public final class ChatRoomProto { } // finally return this; } - + // 定义一个整型变量bitField0_,用于通过位操作来标记构建器中各个字段的状态, + // 例如某个字段是否已被设置、更新等情况, +// 在构建器的多个方法(如合并数据、设置字段等操作)中会对其进行相应的位运算操作, +// 以维护字段状态信息,方便进行相关的逻辑判断和后续处理。 private int bitField0_; - + // 定义一个Object类型的变量wxId_,用于存储wxId字段的值,初始化为空字符串, +// 虽然定义为Object类型, +// 但在实际使用中会根据具体情况转换为对应的字符串或者ByteString类型来存储和操作wxId字段的值, +// 这种设计可以灵活应对不同的存储和操作需求, +// 比如在接收不同来源的数据或者进行序列化、反序列化等操作时能方便地进行类型转换。 private Object wxId_ = ""; - - /** - * string wxId = 1; - * - * @return The wxId. - */ + // 定义获取wxId字段值(字符串类型)的方法,用于从wxId_变量中获取并返回对应的字符串值。 +// 首先获取wxId_变量的引用,然后判断其实际类型,如果不是字符串类型(例如是ByteString类型), +// 则调用ByteString的toStringUtf8方法将其转换为字符串, +// 同时将wxId_变量更新为转换后的字符串,再返回该字符串;如果本身就是字符串类型,则直接返回该字符串, +// 这样实现了根据实际存储情况正确获取wxId字段字符串值的功能,方便外部代码在业务逻辑中使用该字段的数据, +// 符合Protobuf对于字段值获取的规范要求。 public String getWxId() { Object ref = wxId_; if (!(ref instanceof String)) { @@ -2115,11 +2442,12 @@ public final class ChatRoomProto { } } - /** - * string wxId = 1; - * - * @return The bytes for wxId. - */ + // 定义获取wxId字段值的字节表示(ByteString类型)的方法,用于从wxId_变量中获取并返回对应的ByteString对象。 +// 首先获取wxId_变量的引用,若其为字符串类型,则通过ByteString的copyFromUtf8方法将字符串转换为ByteString对象, +// 同时更新wxId_变量为转换后的ByteString对象,再返回该对象; +// 如果wxId_本身就是ByteString类型,则直接返回它, +// 此方法方便在需要字节形式数据的场景(如网络传输、序列化等)下获取wxId字段的字节表示, +// 符合Protobuf对于提供不同形式字段数据访问的规范要求。 public com.google.protobuf.ByteString getWxIdBytes() { Object ref = wxId_; @@ -2134,12 +2462,14 @@ public final class ChatRoomProto { } } - /** - * string wxId = 1; - * - * @param value The wxId to set. - * @return This builder for chaining. - */ + // 定义设置wxId字段值(字符串类型)的方法,用于将传入的字符串值设置为wxId_字段的值。 +// 首先检查传入的字符串值是否为null,如果是, +// 则抛出NullPointerException异常,避免设置空值导致后续逻辑出现问题。 +// 然后将传入的字符串赋值给wxId_变量, +// 通过位或操作(bitField0_ |= 0x00000001)设置bitField0_中对应wxId字段的标记位,表示该字段已被更新, +// 最后调用onChanged方法(可能用于触发属性变更相关逻辑,比如通知观察者、更新内部缓存等), +// 并返回当前构建器对象,方便进行链式调用, +// 继续设置其他字段或者执行构建操作,符合Protobuf构建器模式下设置字段值的规范要求。 public Builder setWxId( String value) { if (value == null) { @@ -2151,11 +2481,11 @@ public final class ChatRoomProto { return this; } - /** - * string wxId = 1; - * - * @return This builder for chaining. - */ + // 定义清除wxId字段值的方法,用于将wxId_字段的值重置为默认实例(getDefaultInstance方法获取的默认Member对象)中wxId字段的值, +// 同时通过位操作(bitField0_ = (bitField0_ & ~0x00000001)) +// 清除bitField0_中对应wxId字段的标记位,表示该字段已被重置, +// 然后调用onChanged方法触发属性变更相关逻辑,最后返回当前构建器对象,方便后续继续构建操作, +// 符合Protobuf构建器模式下重置字段值的规范要求,可将字段恢复到初始状态。 public Builder clearWxId() { wxId_ = getDefaultInstance().getWxId(); bitField0_ = (bitField0_ & ~0x00000001); @@ -2163,12 +2493,16 @@ public final class ChatRoomProto { return this; } - /** - * string wxId = 1; - * - * @param value The bytes for wxId to set. - * @return This builder for chaining. - */ + // 定义设置wxId字段值的字节表示(ByteString类型)的方法, + // 用于将传入的ByteString类型的值设置为wxId_字段的值。 +// 首先检查传入的ByteString值是否为null, +// 如果是,则抛出NullPointerException异常,确保传入的数据有效。 +// 接着调用checkByteStringIsUtf8方法 +// (虽然代码中未展示该方法的具体实现,但推测是用于检查ByteString是否符合UTF-8编码格式的方法,因为对于表示字符串的ByteString通常要求是UTF-8编码)对传入的ByteString进行检查。 +// 然后将传入的ByteString赋值给wxId_变量, +// 通过位或操作(bitField0_ |= 0x00000001)设置bitField0_中对应wxId字段的标记位,表示该字段已被更新, +// 最后调用onChanged方法触发属性变更相关逻辑,并返回当前构建器对象,方便进行链式调用 +// ,继续设置其他字段或者执行构建操作,符合Protobuf构建器模式下设置字节形式字段值的规范要求。 public Builder setWxIdBytes( com.google.protobuf.ByteString value) { if (value == null) { @@ -2180,14 +2514,18 @@ public final class ChatRoomProto { onChanged(); return this; } - + // 定义一个Object类型的变量remark_,用于存储remark字段的值,初始化为空字符串, +// 与wxId_类似,会根据实际情况在字符串和ByteString类型间转换来存储和操作remark字段的值, +// 以满足不同场景下对remark字段数据的处理需求, +// 符合Protobuf消息对象及构建器中字段值存储和操作的设计模式。 private Object remark_ = ""; - /** - * string remark = 2; - * - * @return The remark. - */ + // 定义获取remark字段值(字符串类型)的方法, + // 用于从remark_变量中获取并返回对应的字符串值,逻辑与获取wxId字段字符串值的方法类似。 +// 先获取变量引用,判断类型,若是字符串则直接返回, +// 若是ByteString类型则转换为字符串并更新变量后返回, +// 方便外部代码获取remark字段的字符串内容用于业务逻辑处理,例如展示成员备注信息等场景, +// 符合Protobuf对于字段值获取的规范要求。 public String getRemark() { Object ref = remark_; if (!(ref instanceof String)) { @@ -2201,11 +2539,11 @@ public final class ChatRoomProto { } } - /** - * string remark = 2; - * - * @return The bytes for remark. - */ + // 定义获取remark字段值的字节表示(ByteString类型)的方法, + // 用于从remark_变量中获取并返回对应的ByteString对象,逻辑与获取wxId字段字节表示的方法类似。 +// 根据变量实际存储类型进行相应转换或直接返回操作,以提供remark字段的字节数据, +// 方便在需要字节形式数据的场景下使用, +// 符合Protobuf对于提供多样化字段数据访问方式的规范要求,满足不同层次的数据处理需求。 public com.google.protobuf.ByteString getRemarkBytes() { Object ref = remark_; @@ -2220,12 +2558,9 @@ public final class ChatRoomProto { } } - /** - * string remark = 2; - * - * @param value The remark to set. - * @return This builder for chaining. - */ + // 定义设置remark字段值(字符串类型)的方法,用于将传入的字符串值设置为remark_字段的值。 +// 首先检查传入的字符串值是否为null,如果是,则抛出NullPointerException异常,避免设置空值导致后续逻辑出现问题。 +// 然后将传入的字符串赋值给remark_变量,通过位或操作(bitField0_ |= 0 public Builder setRemark( String value) { if (value == null) { @@ -2237,11 +2572,12 @@ public final class ChatRoomProto { return this; } - /** - * string remark = 2; - * - * @return This builder for chaining. - */ + // 定义清除remark字段值的方法,用于将remark_字段的值重置为默认实例 + // (通过调用getDefaultInstance方法获取的默认Member对象)中remark字段的值, +// 同时通过位操作(bitField0_ = (bitField0_ & ~0x00000002))清除bitField0_中对应remark字段的标记位,表示该字段已被重置, +// 然后调用onChanged方法(可能用于触发属性变更相关逻辑,比如通知观察者、更新内部缓存等), +// 最后返回当前构建器对象,方便后续继续构建操作 +// ,符合Protobuf构建器模式下重置字段值的规范要求,可将字段恢复到初始状态。 public Builder clearRemark() { remark_ = getDefaultInstance().getRemark(); bitField0_ = (bitField0_ & ~0x00000002); @@ -2249,12 +2585,16 @@ public final class ChatRoomProto { return this; } - /** - * string remark = 2; - * - * @param value The bytes for remark to set. - * @return This builder for chaining. - */ + // 定义设置remark字段值的字节表示(ByteString类型)的方法, + // 用于将传入的ByteString类型的值设置为remark_字段的值。 +// 首先检查传入的ByteString值是否为null,如果是, +// 则抛出NullPointerException异常,确保传入的数据有效。 +// 接着调用checkByteStringIsUtf8方法 +// (虽然代码中未展示该方法的具体实现,但推测是用于检查ByteString是否符合UTF-8编码格式的方法,因为对于表示字符串的ByteString通常要求是UTF-8编码)对传入的ByteString进行检查。 +// 然后将传入的ByteString赋值给remark_变量, +// 通过位或操作(bitField0_ |= 0x00000002)设置bitField0_中对应remark字段的标记位,表示该字段已被更新, +// 最后调用onChanged方法触发属性变更相关逻辑,并返回当前构建器对象,方便进行链式调用,继续设置其他字段或者执行构建操作, +// 符合Protobuf构建器模式下设置字节形式字段值的规范要求。 public Builder setRemarkBytes( com.google.protobuf.ByteString value) { if (value == null) { @@ -2266,25 +2606,22 @@ public final class ChatRoomProto { onChanged(); return this; } - + // 定义一个整型变量state_,用于存储state字段的值, + // 后续可通过相应的方法对其进行获取、设置等操作,以完整地表示和处理Member类型对象中state字段相关的信息。 private int state_; - /** - * int32 state = 3; - * - * @return The state. - */ + // 重写获取state字段值(int32类型)的方法,直接返回state_变量存储的值, + // 方便外部代码获取该字段的值用于业务逻辑处理,符合Protobuf对于字段值获取的规范要求。 @Override public int getState() { return state_; } - - /** - * int32 state = 3; - * - * @param value The state to set. - * @return This builder for chaining. - */ + // 定义设置state字段值的方法,用于将传入的整数值设置为state_字段的值。 +// 首先将传入的整数值赋值给state_变量,然后通过位或操作(bitField0_ |= 0x00000004) +// 设置bitField0_中对应state字段的标记位,表示该字段已被更新, +// 最后调用onChanged方法(可能用于触发属性变更相关逻辑,比如通知观察者、更新内部缓存等) +// ,并返回当前构建器对象,方便进行链式调用, +// 继续设置其他字段或者执行构建操作,符合Protobuf构建器模式下设置字段值的规范要求。 public Builder setState(int value) { state_ = value; @@ -2293,24 +2630,29 @@ public final class ChatRoomProto { return this; } - /** - * int32 state = 3; - * - * @return This builder for chaining. - */ + // 定义清除state字段值的方法,用于将state_字段的值重置为0, + // 同时通过位操作(bitField0_ = (bitField0_ & ~0x00000004))清除bitField0_中对应state字段的标记位,表示该字段已被重置, +// 然后调用onChanged方法触发属性变更相关逻辑,最后返回当前构建器对象, +// 方便后续继续构建操作,符合Protobuf构建器模式下重置字段值的规范要求,可将字段恢复到初始状态。 public Builder clearState() { bitField0_ = (bitField0_ & ~0x00000004); state_ = 0; onChanged(); return this; } - + // 重写设置未知字段(UnknownFieldSet类型)的方法, + // 这里直接调用父类的setUnknownFields方法,并将传入的未知字段集合作为参数传入, +// 由父类的方法来处理具体的设置逻辑,这种方式遵循了Protobuf构建器模式下通过父类方法统一管理未知字段设置操作的规范要求, +// 方便在处理未知字段时保持一致性和扩展性。 @Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); } - + // 重写合并未知字段(UnknownFieldSet类型)的方法, + // 直接调用父类的mergeUnknownFields方法,并将传入的未知字段集合作为参数传入, +// 父类的方法会根据其内部逻辑来合并传入的未知字段到当前构建器所管理的未知字段集合中, +// 符合Protobuf构建器模式下处理未知字段合并操作的规范要求,便于在接收外部消息等场景下整合未知字段信息 @Override public final Builder mergeUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -2322,16 +2664,30 @@ public final class ChatRoomProto { } // @@protoc_insertion_point(class_scope:Member) + // 定义一个私有静态常量DEFAULT_INSTANCE, + // 用于存储Member类型的默认实例对象, + // 后续可以通过该默认实例来获取一些初始状态的属性值或者作为默认配置等用途, + // 符合Protobuf中对于类型默认实例管理的常见设计模式。 private static final Member DEFAULT_INSTANCE; static { DEFAULT_INSTANCE = new Member(); } - + // 静态初始化块,用于创建Member类型的默认实例对象, + // 将其赋值给DEFAULT_INSTANCE常量,在类加载时会执行这个初始化操作, + // 确保默认实例对象被正确创建并可用。 public static Member getDefaultInstance() { return DEFAULT_INSTANCE; } - + // 静态方法,用于获取Member类型的默认实例对象,直接返回之前创建并存储在DEFAULT_INSTANCE常量中的默认实例, + // 方便外部代码在需要获取默认状态的Member对象时调用, + // 符合Protobuf对于提供默认实例获取方法的规范要求。 + // 重写parsePartialFrom方法,用于从给定的输入流和扩展注册器中尝试解析出一个部分初始化的Member对象。 + // 首先创建一个Member的构建器(Builder)对象,用于逐步构建Member实例。 + // 然后尝试将输入流中的数据合并到构建器中,如果在合并过程中出现InvalidProtocolBufferException异常(表示协议缓冲区数据格式不正确), + // 则将构建器中已部分构建的Member对象设置为未完成消息(通过setUnfinishedMessage方法)并重新抛出异常, + // 对于UninitializedMessageException异常(表示消息未完全初始化)以及IOException异常(输入输出相关异常)也做类似处理, + // 最后返回构建器构建出的部分初始化的Member对象,这个对象后续可能还需要进一步完善或者验证其初始化状态。 private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @Override @@ -2353,15 +2709,22 @@ public final class ChatRoomProto { return builder.buildPartial(); } }; - + // 静态方法,用于对外提供获取Member类型解析器(PARSER)的接口,方便其他代码在需要解析Member消息时获取到对应的解析器对象, +// 遵循了一种将解析器封装并统一提供访问入口的设计原则,符合Protobuf中对于类型解析相关功能的规范要求。 public static com.google.protobuf.Parser parser() { return PARSER; } + // 重写获取Member类型解析器的方法,直接返回之前定义的静态解析器PARSER, +// 这与parser()方法类似,都是为了对外提供获取解析器的途径,可能在不同的继承体系或者接口实现场景下被调用, +// 确保了在整个Protobuf消息处理框架中,可以通过统一的方式获取到用于解析Member类型消息的解析器。 @Override public com.google.protobuf.Parser getParserForType() { return PARSER; } + // 重写获取Member类型默认实例对象的方法,直接返回之前定义的静态默认实例对象DEFAULT_INSTANCE, +// 对外提供获取默认实例的统一方式,方便在不同业务场景中(例如初始化、对比参照等)使用默认实例进行相应操作, +// 符合Protobuf中对于类提供默认实例获取方法的规范要求以及常见的设计模式理念。 @Override public Member getDefaultInstanceForType() { @@ -2369,26 +2732,55 @@ public final class ChatRoomProto { } } - + // 定义一个私有静态变量internal_static_ChatRoom_descriptor, + // 用于存储ChatRoom类型在Protobuf中的描述符(Descriptor)对象, +// 描述符包含了ChatRoom类型在Protobuf中的各种元数据信息,如字段定义、类型、顺序等, +// 后续在处理ChatRoom类型相关的操作(如序列化、反序列化、字段访问等)时会用到该描述符信息。 private static final com.google.protobuf.Descriptors.Descriptor internal_static_ChatRoom_descriptor; + // 定义一个私有静态变量internal_static_ChatRoom_fieldAccessorTable, + // 用于存储ChatRoom类型的字段访问器表(FieldAccessorTable)对象, +// 字段访问器表可以根据字段名等信息快速定位并访问ChatRoom类型对象的各个字段, +// 方便在代码中高效地操作ChatRoom对象的属性,遵循了Protobuf中对于高效字段访问的设计机制。 private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_ChatRoom_fieldAccessorTable; + // 定义一个私有静态变量internal_static_Member_descriptor, + // 用于存储Member类型在Protobuf中的描述符(Descriptor)对象, +// 其作用与ChatRoom类型的描述符类似, +// 包含了Member类型的各种元数据信息,用于支持Member类型相关的各种操作(如序列化、反序列化、字段访问等)。 private static final com.google.protobuf.Descriptors.Descriptor internal_static_Member_descriptor; + // 定义一个私有静态变量internal_static_Member_fieldAccessorTable, + // 用于存储Member类型的字段访问器表(FieldAccessorTable)对象, +// 方便快速访问Member类型对象的各个字段, +// 符合Protobuf中通过字段访问器表来管理字段访问的设计模式,提高字段访问的效率和准确性。 private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_Member_fieldAccessorTable; - + // 静态方法,用于获取整个Protobuf文件(这里可能对应包含ChatRoom和Member等类型定义的文件) + // 的描述符(FileDescriptor)对象,直接返回之前定义的descriptor变量, +// 在Protobuf中,文件描述符包含了整个文件中定义的所有类型、服务等相关的元数据信息, +// 在一些涉及到全局的类型查找、验证等操作时会用到该文件描述符,符合Protobuf的规范要求。 public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; } + // 定义一个私有静态变量descriptor,用于存储整个Protobuf文件 + // (可能对应名为RoomData.proto的文件,从后续代码推测)的描述符对象, +// 这个描述符对象在类加载时会通过特定的方式进行初始化,用于管理和提供文件中定义的各种Protobuf类型相关的元数据信息 +// ,是Protobuf框架中用于描述文件结构和内容的重要对象。 private static com.google.protobuf.Descriptors.FileDescriptor descriptor; - + // 静态初始化块,用于初始化Protobuf相关的描述符和字段访问器表等重要的元数据信息。 +// 首先定义一个字符串数组descriptorData,其中包含了以特定格式表示的Protobuf文件内容(这里是文本形式的Protobuf定义,包含了ChatRoom和Member类型的字段等信息)。 +// 然后通过调用com.google.protobuf.Descriptors.FileDescriptor的internalBuildGeneratedFileFrom方法,传入descriptorData以及一个空的文件描述符数组(可能用于依赖其他文件描述符的情况,这里为空表示无依赖)来创建并初始化descriptor变量,即整个Protobuf文件的描述符对象。 +// 接着通过调用getDescriptor().getMessageTypes().get(0)方法获取文件描述符中第一个消息类型(这里是ChatRoom类型)的描述符,并赋值给internal_static_ChatRoom_descriptor变量。 +// 再创建ChatRoom类型的字段访问器表(FieldAccessorTable)对象,传入ChatRoom类型的描述符以及对应的字段名数组(用于指定可访问的字段名称),并赋值给internal_static_ChatRoom_fieldAccessorTable变量,方便后续快速访问ChatRoom对象的各个字段。 +// 同样地,获取文件描述符中第二个消息类型(Member类型)的描述符并赋值给internal_static_Member_descriptor变量,创建并初始化Member类型的字段访问器表并赋值给internal_static_Member_fieldAccessorTable变量,用于支持Member类型对象的字段访问操作。 +// 这个静态初始化块在类加载时执行, +// 确保了Protobuf相关的元数据信息能够正确初始化并可用,为后续的各种消息处理操作提供基础支持。 static { String[] descriptorData = { "\n\016RoomData.proto\"\232\001\n\010ChatRoom\022\030\n\007members" + -- 2.34.1 From c2802ada8775945c83bdffb66d92054fa84bab98 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 08:06:03 +0800 Subject: [PATCH 19/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/PageDTO.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/PageDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/PageDTO.java index 712450f..50c1895 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/PageDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/PageDTO.java @@ -2,6 +2,8 @@ package com.xcs.wx.domain.dto; import lombok.Data; @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class PageDTO { //初始化当前页数 -- 2.34.1 From 8d3998c3098efefe5dcc8f32bb0379339888c287 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 08:07:01 +0800 Subject: [PATCH 20/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java index 3c3d5b1..807e5cc 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java @@ -4,7 +4,10 @@ import lombok.Data; import lombok.EqualsAndHashCode; @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 @EqualsAndHashCode(callSuper = true) +//Lombok 提供的便捷工具,用于自动帮你生成equals和hashCode方法的实现代码,减少手动编写这些相对样板化代码的工作量 public class RecoverContactDTO extends PageDTO{ //初始化nickname -- 2.34.1 From 6f043c7f36c8a58488b6ad634b93fa6b52c87667 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 08:07:32 +0800 Subject: [PATCH 21/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java index 807e5cc..7d111cb 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/dto/RecoverContactDTO.java @@ -1,5 +1,5 @@ package com.xcs.wx.domain.dto; - +//导入库 import lombok.Data; import lombok.EqualsAndHashCode; -- 2.34.1 From ac9f0c8bb1ab372bc15ffb07b38dd886482c1b5f Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 08:13:23 +0800 Subject: [PATCH 22/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xcs/wx/domain/vo/AllContactVO.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/AllContactVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/AllContactVO.java index c81e330..782e7e6 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/AllContactVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/AllContactVO.java @@ -1,10 +1,12 @@ package com.xcs.wx.domain.vo; - +//导入库 import lombok.Data; //AllContactVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class AllContactVO { //用户名 -- 2.34.1 From 611768681167ae4a93ace0e1fa9b0a7a78dd8897 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 08:17:06 +0800 Subject: [PATCH 23/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xcs/wx/domain/vo/ChatRoomDetailVO.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomDetailVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomDetailVO.java index 4988e5e..57380b8 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomDetailVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomDetailVO.java @@ -1,5 +1,5 @@ package com.xcs.wx.domain.vo; - +//导入库 import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; @@ -8,6 +8,8 @@ import java.util.List; // ChatRoomDetailVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class ChatRoomDetailVO { //群聊名称 @@ -33,11 +35,13 @@ public class ChatRoomDetailVO { //预留字段2 @JsonIgnore + //在处理 JSON 序列化和反序列化时,控制对象的属性是否参与序列化和反序列化过程 private String reserved2; //roomData @JsonIgnore + //在处理 JSON 序列化和反序列化时,控制对象的属性是否参与序列化和反序列化过程 private byte[] roomData; //群聊信息 -- 2.34.1 From 8963a6e589e952d2ab4ebecd8ac22ea527369ad6 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 08:19:06 +0800 Subject: [PATCH 24/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xcs/wx/domain/vo/ChatRoomInfoVO.java | 4 +++- .../src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java | 4 +++- .../src/main/java/com/xcs/wx/domain/vo/ChatRoomVO.java | 4 +++- .../src/main/java/com/xcs/wx/domain/vo/ContactLabelVO.java | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomInfoVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomInfoVO.java index 9d8d330..b801f3b 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomInfoVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomInfoVO.java @@ -1,10 +1,12 @@ package com.xcs.wx.domain.vo; - +//导入库 import lombok.Data; //ChatRoomInfoVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class ChatRoomInfoVO { //聊天室公告内容。 diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java index c4f2bb0..2e17326 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java @@ -1,10 +1,12 @@ package com.xcs.wx.domain.vo; - +//导入库 import lombok.Data; //ChatRoomMemberVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class ChatRoomMemberVO { //wxId diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomVO.java index b4eeab5..1f4f5bb 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomVO.java @@ -1,11 +1,13 @@ package com.xcs.wx.domain.vo; - +//导入库 import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; //ChatRoomVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class ChatRoomVO { //聊天室名称 diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactLabelVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactLabelVO.java index 7d63713..a249d17 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactLabelVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactLabelVO.java @@ -1,10 +1,12 @@ package com.xcs.wx.domain.vo; - +//导入库 import lombok.Data; //ContactLabelVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class ContactLabelVO { //标签Id -- 2.34.1 From 65456aa184fe43b2a6034ec0b1a4cf33ca49e2db Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 08:21:36 +0800 Subject: [PATCH 25/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xcs/wx/domain/vo/ContactVO.java | 4 +++- .../main/java/com/xcs/wx/domain/vo/CountRecentMsgsVO.java | 4 +++- .../src/main/java/com/xcs/wx/domain/vo/DatabaseVO.java | 4 +++- .../src/main/java/com/xcs/wx/domain/vo/DecryptVO.java | 6 +++++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactVO.java index 1d12879..b31bdc2 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ContactVO.java @@ -1,5 +1,5 @@ package com.xcs.wx.domain.vo; - +//导入库 import lombok.Data; import java.util.List; @@ -7,6 +7,8 @@ import java.util.List; //ContactVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class ContactVO { //用户名 diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CountRecentMsgsVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CountRecentMsgsVO.java index 7565b33..8b75154 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CountRecentMsgsVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/CountRecentMsgsVO.java @@ -1,10 +1,12 @@ package com.xcs.wx.domain.vo; - +//导入库 import lombok.Data; // CountRecentMsgsVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class CountRecentMsgsVO { // 类型 diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DatabaseVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DatabaseVO.java index 1d25617..2750244 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DatabaseVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DatabaseVO.java @@ -1,10 +1,12 @@ package com.xcs.wx.domain.vo; - +//导入库 import lombok.Data; //DatabaseVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class DatabaseVO { //文件路径 diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DecryptVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DecryptVO.java index ac11899..04d9062 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DecryptVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/DecryptVO.java @@ -1,12 +1,16 @@ package com.xcs.wx.domain.vo; - +//导入库 import lombok.Builder; import lombok.Data; //DecryptVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 @Builder +//在编译阶段自动生成一些 Java 样板代码,如构造函数、getter/setter 方法等,以减少开发人员编写的冗余代码量。 + public class DecryptVO { //文件名称 -- 2.34.1 From 70c273f92e3596ac1cbb5ecc667971bb8f6422fd Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 08:26:48 +0800 Subject: [PATCH 26/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xcs/wx/domain/vo/ExportChatRoomVO.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportChatRoomVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportChatRoomVO.java index b5a647d..184c60d 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportChatRoomVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportChatRoomVO.java @@ -1,5 +1,5 @@ package com.xcs.wx.domain.vo; - +//导入库 import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; @@ -10,53 +10,81 @@ import lombok.Data; // ExportChatRoomVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER) +//用于自定义某种内容的样式。 +// 其中horizontalAlignment = HorizontalAlignmentEnum.CENTER表示设置内容的水平对齐方式为居中。 public class ExportChatRoomVO { //群号 @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("群号") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String chatRoomName; //群聊名称 @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("群聊名称") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String chatRoomTitle; //备注 @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("备注") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String selfDisplayName; //创建人 @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("创建人") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String createBy; //群聊是否已经解散 @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("群聊是否已经解散") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private Boolean dissolution; //是否为企业微信群 @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("是否为企业微信群") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private Boolean enterprise; //群聊数据 @ExcelIgnore + //它的主要作用是在将 Java 对象的数据导出到 Excel 文件或者从 Excel 文件读取数据并映射到 Java 对象时 + // ,指定被该注解标记的属性将被忽略。 + private byte[] roomData; //群聊人数 @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("群聊人数") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private Integer memberCount; } -- 2.34.1 From 381f86b068a650c2eb6d1ba0d8e23e70816ded19 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 08:30:19 +0800 Subject: [PATCH 27/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xcs/wx/domain/vo/ExportContactVO.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportContactVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportContactVO.java index 17380c0..4b8b32d 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportContactVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportContactVO.java @@ -1,5 +1,5 @@ package com.xcs.wx.domain.vo; - +//导入库 import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentStyle; @@ -9,42 +9,64 @@ import lombok.Data; // ExportContactVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER) +//用于自定义某种内容的样式。 +// 其中horizontalAlignment = HorizontalAlignmentEnum.CENTER表示设置内容的水平对齐方式为居中。 public class ExportContactVO { //用户名 @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("微信Id") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String userName; // 别名 @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("微信号") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String alias; //备注 @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("备注") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String remark; // 昵称 @ColumnWidth(30) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用 + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("昵称") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String nickName; //描述 @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("描述") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String describe; //标签Id @ColumnWidth(20) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("标签Id") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String labelIdList; } -- 2.34.1 From bd54274588ee0612e01d45b87544dd4a1b603035 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 08:33:30 +0800 Subject: [PATCH 28/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xcs/wx/domain/vo/ExportMsgVO.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportMsgVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportMsgVO.java index 2b7244a..a4179ff 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportMsgVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ExportMsgVO.java @@ -1,5 +1,5 @@ package com.xcs.wx.domain.vo; - +//导入库 import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentStyle; @@ -9,48 +9,73 @@ import lombok.Data; //ExportMsgVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER) +//用于自定义某种内容的样式。 +// 其中horizontalAlignment = HorizontalAlignmentEnum.CENTER表示设置内容的水平对齐方式为居中。 public class ExportMsgVO { //消息服务器 ID @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("消息Id") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String msgSvrId; //聊天人Id @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用,这里的 “25” 应该是代表某种宽度的度量单位, + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("聊天人Id") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String wxId; //消息类型 @ColumnWidth(10) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用 + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("类型") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private Integer type; //消息子类型 @ColumnWidth(10) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用 + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("子类型") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private Integer subType; // 是否为发送者 @ColumnWidth(15) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用 + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("是否发送者") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private Integer isSender; //消息创建时间 @ColumnWidth(25) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用 + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("创建时间") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String strCreateTime; //消息内容字符串 @ColumnWidth(80) + //一个用于指定列宽度的注解。通常在表格相关的编程场景中使用 + // 可能是像素(px)、点(pt)或者字符宽度等,具体取决于使用这个注解的框架或库的定义。 @ExcelProperty("消息内容") + //用于在将数据导出到 Excel 文件或者从 Excel 文件读取数据时,对 Excel 中的列进行标识。 private String strContent; } -- 2.34.1 From a6444efe8fc7dc391b91705452a68e1b00249168 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 08:36:11 +0800 Subject: [PATCH 29/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xcs/wx/domain/vo/FeedsLocationVO.java | 4 +++- .../src/main/java/com/xcs/wx/domain/vo/FeedsMediaVO.java | 4 +++- .../src/main/java/com/xcs/wx/domain/vo/FeedsVO.java | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsLocationVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsLocationVO.java index f97cac6..f1f35bc 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsLocationVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsLocationVO.java @@ -1,10 +1,12 @@ package com.xcs.wx.domain.vo; - +//导入库 import lombok.Data; //FeedsLocationVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class FeedsLocationVO { //poiClassifyId diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsMediaVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsMediaVO.java index 4d752cd..a229718 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsMediaVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsMediaVO.java @@ -1,10 +1,12 @@ package com.xcs.wx.domain.vo; - +//导入库 import lombok.Data; //FeedsMediaVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class FeedsMediaVO { //大图Url diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsVO.java index 541c347..51d83c3 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/FeedsVO.java @@ -1,5 +1,5 @@ package com.xcs.wx.domain.vo; - +//导入库 import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; @@ -8,6 +8,8 @@ import java.util.List; //FeedsVO @Data +//使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 +//以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class FeedsVO { //动态的唯一标识ID。 @@ -17,6 +19,7 @@ public class FeedsVO { //创建时间,存储为整数形式。 @JsonIgnore + //在处理 JSON 序列化和反序列化时,控制对象的属性是否参与序列化和反序列化过程 private Integer createTime; //创建时间 @@ -58,6 +61,7 @@ public class FeedsVO { //动态的内容文本。 @JsonIgnore + //在处理 JSON 序列化和反序列化时,控制对象的属性是否参与序列化和反序列化过程 private String content; //内容描述 -- 2.34.1 From ad6d0330b22b44755fff55fd16c7e70b2b6776c0 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 09:07:51 +0800 Subject: [PATCH 30/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java index 2e17326..f960de2 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java @@ -8,7 +8,13 @@ import lombok.Data; //使用Lombok的Data注解,会自动为类中的非静态、非final字段生成对应的getter、setter方法 //以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class ChatRoomMemberVO { - + /** + * + * + * + * + * + */ //wxId private String wxId; -- 2.34.1 From 1d92f6f13de10af62768f1aa3121ccbfc25471e9 Mon Sep 17 00:00:00 2001 From: wanjiayi <969685829@qq.com> Date: Tue, 17 Dec 2024 09:18:40 +0800 Subject: [PATCH 31/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xcs/wx/domain/vo/ChatRoomMemberVO.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java index f960de2..33c0fdb 100644 --- a/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java +++ b/wx-dump-admin/src/main/java/com/xcs/wx/domain/vo/ChatRoomMemberVO.java @@ -9,25 +9,27 @@ import lombok.Data; //以及toString、equals、hashCode方法,简化代码编写,减少样板代码量 public class ChatRoomMemberVO { /** - * - * - * - * - * + *初始化微信id */ - //wxId + private String wxId; - //备注 + /** + * 初始化备注 + */ private String remark; - //备注 + /** + * 初始化简介 + */ private Integer state; - //头像 + /** + * 初始化头像 + */ private String headImgUrl; } -- 2.34.1