当前位置:  开发笔记 > 编程语言 > 正文

Java:动态属性

如何解决《Java:动态属性》经验,为你挑选了1个好方法。

女士们先生们,

我是Java新手,请原谅我,如果它很明显,但我还没发现很多.

我想在运行时为类创建动态属性(变量)(定义一个可以在运行时通过添加或更改属性和方法来更改的对象).


原因:我想在GAE中存储一个数据模型,可以在编译应用程序后动态扩展(是的,DataStore允许).应该添加哪些属性也存储在DataStore中(这就像使用机器人来构建机器人......有趣).

Python允许我在运行时添加属性.Groovy似乎也允许这样做."纯粹的"Java世界中唯一指向该方向的东西似乎是"动态代理".

但是,如果他们能做到这一点,我还无法弄明白.



1> cletus..:

Java无法动态添加属性.它也没有能力在运行时动态创建类或在运行时更改它们.Java强烈且静态地键入.你能做的最好的事情就是将这些属性放入Map或类似.

编辑:好的,显然有些澄清是有序的.该OP特别提到GAE,其中没有一种方法都在工作,但我会提到他们,因为一些人似乎不以为然他们的缺席.

在Java编译器API(Java的6+)可以让你在运行时编译Java类.从技术上讲,您可以编写一个Java源文件来查看您想要的内容,编译并加载它.

Java字节码库可以在运行时重写类.这被JPA(和其他)等库使用.你可以用这种方式修改类.

然而,OP指的是a)参考GAE和b)更多按照Javascript如何允许您通过动态添加,删除或更改属性来修改运行时的类或特定实例的顺序.Java肯定不会这样做,特别是在GAE上没有.

上面的例子就不像是char *在C++中使用类,因此你可以阅读私有成员并不意味着C++没有私有成员.您实际上是使用这两种方法绕过Java运行时,即使它们是Java的一部分.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有