From 847a08c9aeb62f0eabab9b0ccf6743ad0bac861c Mon Sep 17 00:00:00 2001 From: "wangjiahua.wjh" Date: Mon, 15 Jun 2026 11:18:22 +0800 Subject: [PATCH] [ISSUE #10511] Replace Enum.values() loop with static array lookup in LanguageCode and SerializeType --- .../remoting/protocol/LanguageCode.java | 21 +++++++++++++------ .../remoting/protocol/SerializeType.java | 10 ++++----- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/LanguageCode.java b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/LanguageCode.java index cf43cbab3dd..2ae09992854 100644 --- a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/LanguageCode.java +++ b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/LanguageCode.java @@ -38,6 +38,19 @@ public enum LanguageCode { RUST((byte) 12), NODE_JS((byte) 13); + private static final LanguageCode[] BY_CODE; + static { + LanguageCode[] all = values(); + int max = 0; + for (LanguageCode lc : all) { + max = Math.max(max, lc.code & 0xFF); + } + BY_CODE = new LanguageCode[max + 1]; + for (LanguageCode lc : all) { + BY_CODE[lc.code & 0xFF] = lc; + } + } + private byte code; LanguageCode(byte code) { @@ -45,12 +58,8 @@ public enum LanguageCode { } public static LanguageCode valueOf(byte code) { - for (LanguageCode languageCode : LanguageCode.values()) { - if (languageCode.getCode() == code) { - return languageCode; - } - } - return null; + int idx = code & 0xFF; + return idx < BY_CODE.length ? BY_CODE[idx] : null; } public byte getCode() { diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/SerializeType.java b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/SerializeType.java index b040f8fbb60..9cdacc2fd62 100644 --- a/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/SerializeType.java +++ b/remoting/src/main/java/org/apache/rocketmq/remoting/protocol/SerializeType.java @@ -21,6 +21,8 @@ public enum SerializeType { JSON((byte) 0), ROCKETMQ((byte) 1); + private static final SerializeType[] BY_CODE = {JSON, ROCKETMQ}; + private byte code; SerializeType(byte code) { @@ -28,12 +30,8 @@ public enum SerializeType { } public static SerializeType valueOf(byte code) { - for (SerializeType serializeType : SerializeType.values()) { - if (serializeType.getCode() == code) { - return serializeType; - } - } - return null; + int idx = code & 0xFF; + return idx < BY_CODE.length ? BY_CODE[idx] : null; } public byte getCode() {