[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)
{
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;
}
dataRangeArray.Add(titleRow);
@ -58,7 +58,7 @@ namespace Luban.Job.Cfg.Generate
foreach (var subTitle in title.SubTitleList)
{
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;
}

View File

@ -61,7 +61,7 @@ namespace Luban.Job.Cfg.TypeVisitors
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)

View File

@ -59,7 +59,7 @@ namespace Luban.Job.Cfg.TypeVisitors
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)

View File

@ -60,5 +60,11 @@ namespace Luban.Job.Common.TypeVisitors
{
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";
}
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)

View File

@ -11,31 +11,13 @@ package {{namespace_with_top_module}};
* {{comment | html.escape}}
*/
{{~end~}}
public enum {{name}} {
public final class {{name}} {
{{~ for item in items ~}}
{{~if item.comment != '' ~}}
/**
* {{item.escape_comment}}
*/
{{~end~}}
{{item.name}}({{item.int_value}}),
public static final int {{item.name}} = {{item.int_value}};
{{~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("");
}
}