首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用户定义的对象中动态实例化字段

问在用户定义的对象中动态实例化字段
EN

Stack Overflow用户
提问于 2018-10-16 03:00:17
回答 2查看 98关注 0票数 0

需要使用方法参数中传递的字段名动态创建对象。

就像..。

代码语言:javascript
复制
public void createDisplay(List<String> fields) {
//fetch fields names
//create an object in java using the fields passed
//assign values to the dynamically created fields.
}

或

代码语言:javascript
复制
public void createDisplay(Schema schema) {
//create an object in java using the schema
//assign values to the dynamically created fields.
}

有人能帮上忙吗。

EN

回答 2

Stack Overflow用户

发布于 2018-10-16 03:11:40

你的问题有点模糊。如果你真的想从你的方法中创建完全初始化的对象,那么我建议你这样做:

代码语言:javascript
复制
public void createDisplay(List<String> fields) {
//Iterate over the list do null checking wherever required
//call parameterized constructor of your class and pass values in the loop and keep on adding them
//change the return type of method from void to the object/list of object 
//you want and return it from this method
}
票数 0
EN

Stack Overflow用户

发布于 2018-10-16 05:28:25

除非你完全确定你在做什么,否则在运行时这是不值得的。相反,将这些精力投入到编译时解决方案中可能更有价值。

有一个名为ByteBuddy的库,它具有动态生成类型的能力,但我不相信在这方面有太多的实用程序,因为你想在系统中动态地创建一个合适的类型。您将面临的最大问题是:

  • 如果您有多个活动的类加载器,您将面临在运行时遇到难以诊断的错误的实际风险,这将使您的应用程序瘫痪。作为参考,您希望获得动态创建的类的编译时安全性,这是不可能的-默认情况下,ByteBuddy生成的类的名称与您expecting.
  • There's的名称不同,这在调试和诊断动态生成的代码时更加麻烦,因为没有真正的方法来完成静态分析。

我强烈建议您转而研究编译时解决方案。运行时解决方案因其灵活性而颇具吸引力,但Java不遗余力地成为_in_flexible。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52823171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档