![]() |
1
2
阿飞,这是不可能的。如果使用静态类型,则只能在不使用类型转换的情况下获得类型安全性。静态类型表示在编译时已知的方法签名(在类或接口中)。
你所能做的就是有一个接口,上面有很多方法,比如
|
![]() |
2
2
显而易见的答案是使用
此代码可以在公共基类中实现。因为只有几个方法,所以如果需要扩展其他方法,使用委托也很简单。 为了避免选角问题,可以使用 type-safe object map :
这里的技巧是包含类型信息的密钥:
表演会很好的。 字段重用是通过使用相同的值类型,或者通过使用附加功能扩展类型安全对象映射的键类。
计算字段可以用存储
由于所有的操作都只发生在两个(或至少几个)方法中,所以发送信号很简单,可以按您喜欢的任何方式进行。 要实现自动父/子处理,请在子对象的“set parent”信号上安装一个信号侦听器,然后将子对象添加到新父对象(必要时将其从旧父对象中移除)。 由于不使用框架,也不需要技巧,因此生成的代码应该非常干净且易于理解。不使用字符串作为键还有一个好处,就是人们不会在代码中乱扔字符串文本。 |
![]() |
3
1
所以基本上你想创建一种新的对象模型,它有更多的动态属性,有点像动态语言? 可能值得查看的源代码 Rhino (即用java实现的javascript),在用java实现动态类型系统方面也面临着类似的挑战。 从我的头顶上,我怀疑您会发现内部哈希映射最终最适合您的目的。 我写了一个小游戏( Tyrant - GPL source available )使用类似的具有hashmaps特性的动态对象模型,效果很好,性能也不是问题。我在get和set方法中使用了一些技巧来允许动态属性修饰符,我相信您可以做同样的事情来实现您的信号和父/子关系等。 [编辑]请参见 source of BaseObject 如何实施。 |
![]() |
4
1
您可以使用字节码操作库。这种方法的缺点是需要创建自己的类加载器来动态加载类中的更改。 |
![]() |
5
1
我做的几乎一样,它是纯Java解决方案:
说到性能(这对我来说很重要),你很难胜过这个解决方案。可重用性与xml文档相同。 |
![]() |
porton · 更改Django查询中的字段名称 7 年前 |
![]() |
Chandan Sahu · 添加自定义注册字段并检查其值 7 年前 |
![]() |
Dr.MTR · 在“添加到购物车”按钮下显示自定义字段 7 年前 |
|
Innervation · 有条件显示Woocommerce签出字段 7 年前 |
![]() |
alexander · 有价值的Django manytomany 7 年前 |
![]() |
Ben.Name · 在Access中为网络日在表(或查询)中创建字段 7 年前 |
|
JNg · 根据使用案例的另一个字段创建新字段QGIS 7 年前 |