我正在寻找一种巧妙的方式来构建动态Java类,即在运行时可以添加/删除字段的类。使用场景:我有一个编辑器,用户应该能够在运行时添加模型的字段,甚至可能在运行时创建整个模型。
一些设计目标:
- 如果可能,自定义代码(该代码来自扩展模型的插件)在处理动态字段时应无需强制转换即可安全使用。 - 良好的性能(能否击败HashMap?也许可以在设置期间使用数组并为字段分配索引?) - 字段“重用”(即如果您在多个地方使用相同类型的字段,则应该可以定义它一次然后重复使用它)。 - 依赖于其他字段值的计算字段 - 当字段更改值时应发送信号(不一定通过Beans API) - “自动”父子关系(当您向父项添加子项时,子项中的父指针应该免费设置)。 - 易于理解 - 易于使用
请注意,这是一个“跳出思维定势”的问题。我会在下面发布一个示例以激发您的灵感 :-)
一些设计目标:
- 如果可能,自定义代码(该代码来自扩展模型的插件)在处理动态字段时应无需强制转换即可安全使用。 - 良好的性能(能否击败HashMap?也许可以在设置期间使用数组并为字段分配索引?) - 字段“重用”(即如果您在多个地方使用相同类型的字段,则应该可以定义它一次然后重复使用它)。 - 依赖于其他字段值的计算字段 - 当字段更改值时应发送信号(不一定通过Beans API) - “自动”父子关系(当您向父项添加子项时,子项中的父指针应该免费设置)。 - 易于理解 - 易于使用
请注意,这是一个“跳出思维定势”的问题。我会在下面发布一个示例以激发您的灵感 :-)
TypedMapKey<List<String>> KEY2 = new TypedMapKey<List<String>>( "key1" );
,代码会编译通过,但是你会得到一个运行时类转换异常。 - KruTypedMapKey
实例都是唯一的。我已经更新了我的博客。 - Aaron Digulla