MisterChangRay / magic-byte

a java tool for faster convertor byte2object
BSD 3-Clause "New" or "Revised" License
49 stars 20 forks source link

建议 dynamicSizeOf 支持表达式 #39

Closed FULaBUla closed 10 months ago

FULaBUla commented 11 months ago

原先只考虑过长度是另一个属性的情况,所以直接指定对应的 order 即可拿到长度,但是如果长度被封在了一个 bean 里,那么直接指定 order 是那个封装的对象,长度在封装的对象里里面,也就没法取了

MisterChangRay commented 11 months ago

这里这个如果要支持表达式那就要引入ognl包,感觉为了这个不值得引入另一个包。

所以我想的是有两种方案:

FULaBUla commented 11 months ago

确实,SPEL、OGNL、Groovy、JEXL、EL 这几种实现都需要引依赖。

我更倾向于第二种,感觉第一种会导致使用上混乱或者不灵活,不能配置多个。第二个的话,是不是这样实现,

@MagicClass
class A {

@MagicField(order = 1)
private int a;

@MagicField(order = 3)
private int length;

}

@MagicClass
class B {

@MagicField(order = 1)
private A a;

// 样式 1
@MagicField(order = 3, dynamicSizeof = 3, sizeFather = 1)
private byte[] data;

// 样式 2
@MagicField(order = 3, dynamicSizeof = 1.3)
private byte[] data;

}
MisterChangRay commented 10 months ago

现在已经实现并支持了。

废弃当前以orderrid作为引用,替换为以属性名为引用(支持相对引用和绝对引用)

可以直接以属性名引用当前同级或者下级所有属性,也支持以绝对引用(以根对象开始引用属性路径)

FULaBUla commented 10 months ago

现在已经实现并支持了。

废弃当前以orderrid作为引用,替换为以属性名为引用(支持相对引用和绝对引用)

可以直接以属性名引用当前同级或者下级所有属性,也支持以绝对引用(以根对象开始引用属性路径)

旧的和新的使用方式是不是都存在比较好,否则这个对于已实现但想用新版本特性的代码改动量太大了吧