Java:动态属性
女士们先生们,
我是Java的新手,如果很明显,请原谅我,但我没有太多了解。
我想在运行时为类创建动态属性(变量)(定义可以在运行时通过添加或更改属性和方法进行更改的对象)。
原因:我想在GAE中存储一个数据模型,该数据模型可以在应用程序编译后动态扩展(是的,DataStore允许这样做)。应当添加哪些属性也存储在DataStore中(就像使用机器人来构建机器人一样……有趣)。
Python使我可以在运行时添加属性。Groovy似乎也允许这样做。在“纯” Java世界中,唯一可以指示该方向的东西似乎是“动态代理”。
但是我还不知道他们是否能解决问题。
回答:
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运行时。
以上是 Java:动态属性 的全部内容, 来源链接: utcz.com/qa/425164.html