[fix] config enum的java代码生成普通的int,而不是java枚举类。修复flags=1的枚举项反序列化的异常。

main
walon 2022-06-25 18:29:59 +08:00
parent 4255ae25bf
commit c0ddce497c
6 changed files with 15 additions and 26 deletions

View File

@ -45,7 +45,7 @@ namespace Luban.Job.Cfg.Generate
foreach (var subTitle in title.SubTitleList) foreach (var subTitle in title.SubTitleList)
{ {
string titleAndTags = subTitle.Tags.Count == 0 ? subTitle.Name : subTitle.Name + "&" + string.Join('&', subTitle.Tags.Select(e => $"{e.Key}={e.Value}")); string titleAndTags = subTitle.Tags.Count == 0 ? subTitle.Name : subTitle.Name + "#" + string.Join('#', subTitle.Tags.Select(e => $"{e.Key}={e.Value}"));
titleRow[subTitle.FromIndex] = titleAndTags; titleRow[subTitle.FromIndex] = titleAndTags;
} }
dataRangeArray.Add(titleRow); dataRangeArray.Add(titleRow);
@ -58,7 +58,7 @@ namespace Luban.Job.Cfg.Generate
foreach (var subTitle in title.SubTitleList) foreach (var subTitle in title.SubTitleList)
{ {
string typeAndTags = valueType.Bean.TryGetField(subTitle.Name, out var f, out _) ? string typeAndTags = valueType.Bean.TryGetField(subTitle.Name, out var f, out _) ?
(f.CType.Tags.Count == 0 ? f.CType.Apply(CsDefineTypeName.Ins) : f.CType.Apply(CsDefineTypeName.Ins) + "&" + string.Join('&', f.CType.Tags.Select(e => $"{e.Key}={e.Value}"))) (f.CType.Tags.Count == 0 ? f.CType.Apply(CsDefineTypeName.Ins) : f.CType.Apply(CsDefineTypeName.Ins) + "#" + string.Join('#', f.CType.Tags.Select(e => $"({e.Key}={e.Value})")))
: ""; : "";
typeRow[subTitle.FromIndex] = typeAndTags; typeRow[subTitle.FromIndex] = typeAndTags;
} }

View File

@ -61,7 +61,7 @@ namespace Luban.Job.Cfg.TypeVisitors
public string Accept(TEnum type, string json, string x) public string Accept(TEnum type, string json, string x)
{ {
return $"{x} = {type.DefineEnum.FullNameWithTopModule}.valueOf({json}.getAsInt());"; return $"{x} = {json}.getAsInt();";
} }
public string Accept(TString type, string json, string x) public string Accept(TString type, string json, string x)

View File

@ -59,7 +59,7 @@ namespace Luban.Job.Cfg.TypeVisitors
public string Accept(TEnum type, string bufName, string fieldName) public string Accept(TEnum type, string bufName, string fieldName)
{ {
return $"{fieldName} = {type.DefineEnum.FullNameWithTopModule}.valueOf({bufName}.readInt());"; return $"{fieldName} = {bufName}.readInt();";
} }
public string Accept(TString type, string bufName, string fieldName) public string Accept(TString type, string bufName, string fieldName)

View File

@ -60,5 +60,11 @@ namespace Luban.Job.Common.TypeVisitors
{ {
return "Integer"; return "Integer";
} }
public override string Accept(TEnum type)
{
//return type.DefineEnum.FullNameWithTopModule;
return "Integer";
}
} }
} }

View File

@ -56,9 +56,10 @@ namespace Luban.Job.Common.TypeVisitors
return type.IsNullable ? "Double" : "double"; return type.IsNullable ? "Double" : "double";
} }
public string Accept(TEnum type) public virtual string Accept(TEnum type)
{ {
return type.DefineEnum.FullNameWithTopModule; //return type.DefineEnum.FullNameWithTopModule;
return type.IsNullable ? "Integer" : "int";
} }
public string Accept(TString type) public string Accept(TString type)

View File

@ -11,31 +11,13 @@ package {{namespace_with_top_module}};
* {{comment | html.escape}} * {{comment | html.escape}}
*/ */
{{~end~}} {{~end~}}
public enum {{name}} { public final class {{name}} {
{{~ for item in items ~}} {{~ for item in items ~}}
{{~if item.comment != '' ~}} {{~if item.comment != '' ~}}
/** /**
* {{item.escape_comment}} * {{item.escape_comment}}
*/ */
{{~end~}} {{~end~}}
{{item.name}}({{item.int_value}}), public static final int {{item.name}} = {{item.int_value}};
{{~end~}} {{~end~}}
;
private final int value;
public int getValue() {
return value;
}
{{name}}(int value) {
this.value = value;
}
public static {{name}} valueOf(int value) {
{{~ for item in items ~}}
if (value == {{item.int_value}}) return {{item.name}};
{{~end~}}
throw new IllegalArgumentException("");
}
} }