gpt4 book ai didi

具有动态字段的 Java 类

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:11:33 27 4
gpt4 key购买 nike

我正在寻找构建动态 Java 类的巧妙方法,即您可以在运行时添加/删除字段的类。使用场景:我有一个编辑器,用户应该能够在运行时向模型添加字段,甚至可以在运行时创建整个模型。

一些设计目标:

  • 对于在动态字段上运行的自定义代码(该代码将来自以无法预料的方式扩展模型的插件),如果可能的话,无需转换即可安全键入。
  • 良好的性能(你能打败 HashMap 吗?也许使用数组并在设置期间为字段分配索引?)
  • 字段“重用”(即如果您在多个地方使用相同类型的字段,应该可以定义一次然后重用)。
  • 依赖于其他字段值的计算字段
  • 应在字段更改值时发送信号(不一定通过 Beans API)
  • “自动”父子关系(当您将子添加到父时,子中的父指针应设置为“自由”)。
  • 易于理解
  • 易于使用

请注意,这是一个“跳出圈子思考”的问题。我将在下面发布一个示例,让您心情愉快:-)

最佳答案

Type safe without casts if possible for custom code that works on the dynamic fields (that code would come from plugins which extend the model in unforeseen ways)

据我所知,这是不可能的。如果你使用静态类型,你只能在没有类型转换的情况下获得类型安全。静态类型意味着在编译时已知的方法签名(在类或接口(interface)中)。

您能做的最好的事情就是拥有一个带有一堆方法的接口(interface),例如 String getStringValue(String field)int getIntValue(String field) 等等。当然,您只能对一组预先确定的类型执行此操作。任何类型不在该集合中的字段都需要进行类型转换。

关于具有动态字段的 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3127189/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com