Files
svn/tech/msg/templates/MsgHandlerIds.ftl
2025-08-04 10:46:00 +08:00

66 lines
1.4 KiB
Plaintext

package ${packageName};
import java.util.HashMap;
import java.util.Map;
public class MsgHandlerIds {
<#list messageInfos as message>
public static final int ${message.name} = ${message.id?c};
</#list>
//消息CLASS与消息ID的对应关系<消息class, 消息ID>
private static final Map<Class<? extends MsgHandler>, Integer> classToId = new HashMap<>();
//消息ID与消息CLASS的对应关系<消息ID, 消息class>
private static final Map<Integer, Class<? extends MsgHandler>> idToClass = new HashMap<>();
static {
//初始化消息CLASS与消息ID的对应关系
initClassToId();
//初始化消息ID与消息CLASS的对应关系
initIdToClass();
}
/**
* 获取消息ID
* @param clazz
* @return
*/
public static int getIdByClass(Class<? extends MsgHandler> clazz) {
return classToId.get(clazz);
}
/**
* 获取消息CLASS
* @param clazz
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T getClassById(int msgId) {
return (T) idToClass.get(msgId);
}
/**
* 初始化消息CLASS与消息ID的对应关系
*/
private static void initClassToId() {
<#list messageInfos as message>
classToId.put(${message.name}.class, ${message.name});
</#list>
}
/**
* 初始化消息ID与消息CLASS的对应关系
*/
private static void initIdToClass() {
<#list messageInfos as message>
idToClass.put(${message.name},${message.name}.class);
</#list>
}
}