当前位置: 首页 > 面试题库 >

从Java中的字符串创建新对象

南门峰
2023-03-14
问题内容

有没有办法从Java中的String变量创建新类?

String className = "Class1";
//pseudocode follows
Object xyz = new className(param1, param2);

另外,如果可能,生成的对象是否必须为Object类型?

也许有更好的方法,但是我希望能够从XML文件中检索值,然后实例化以这些字符串命名的类。这些类中的每一个都实现相同的接口,并从相同的父类派生,因此我将能够在该类中调用特定的方法。


问题答案:

这是你想做的:

String className = "Class1";
Object xyz = Class.forName(className).newInstance();

请注意,newInstance方法不允许使用参数化的构造函数。(请参阅Class.newInstance文档)

如果确实需要使用参数化的构造函数,则需要执行以下操作:

import java.lang.reflect.*;

Param1Type param1;
Param2Type param2;
String className = "Class1";
Class cl = Class.forName(className);
Constructor con = cl.getConstructor(Param1Type.class, Param2Type.class);
Object xyz = con.newInstance(param1, param2);


 类似资料:
  • 问题内容: 我有一个接受File作为参数的函数。我不想创建/写入新文件(我没有对文件系统的写访问权)以便将字符串数据传递给该函数。我应该补充说字符串数据在文件中不存在(所以我无法从文件中读取数据)。 我可以使用流并将其“广播”到文件对象吗? 问题答案: 没有; 类的实例表示文件系统中的路径。因此,您只能将该功能与文件一起使用。但是,也许有一个过载需要替代?

  • 问题内容: 有什么方法可以在Java中使用字符串的哈希码,然后重新创建该字符串? 例如这样的事情: 我之所以这样说,是因为我必须将字符串转换为整数值,然后从该整数值重构该字符串。 问题答案: 这是不可能的。String的哈希码是有损的;许多字符串值将导致相同的哈希码。一个整数有32个位,每个位置有两个值。即使是32个字符的字符串(例如,每个字符都有很多可能性)也无法映射为32位而不会发生冲突。他们

  • 问题内容: 我有从外部应用程序获取数据的Java应用程序。传入的JSON以字符串形式。我想解析该Strings并创建BSON对象。 不幸的是,我在Java的BSON实现中找不到用于此的API。 我是否像GSON这样使用了外部解析器? 问题答案: 最简单的方法似乎是使用JSON库将JSON字符串解析为,然后使用方法将这些值放入。

  • 问题内容: 问题:有没有办法使用字符串在python中 创建函数对象 ? 信息:我正在一个项目中,该项目将数据存储在sqlite3服务器后端中。没什么可疯狂的。DAL类通常是通过代码生成来完成的,因为代码是如此平凡。但这给了我一个主意。在python中找不到属性时,如果定义函数,它将在错误之前调用该函数。因此,我通过解析器和逻辑树来计算它的方式可以动态生成第一次调用时所需的代码,然后将函数对象另存

  • 问题内容: 我有一个包含多个子节点的大HTML字符串。 是否可以使用此字符串构造 jQuery DOM对象? 我试过了,但它只返回一个包含所有单个节点的数组。 试图获得一个我可以使用.find()函数的元素。 问题答案: 更新: 从jQuery 1.8开始,我们可以使用$.parseHTML,它将HTML字符串解析为DOM节点数组。例如: 这段代码中发生了什么: 是DOM中不存在的伪造品 作为孩子

  • 问题内容: 我想使用ES6创建对象工厂,但是旧式语法不适用于新式语法。 我有下一个代码: 我做错了什么? 问题答案: 不要将类名放在该对象上。将类本身放在那里,这样您就不必依赖它们是全局的并且可以通过(在浏览器中)访问。 顺便说一句,没有充分的理由将此工厂设置为类,您可能只会实例化一次(单例)。只是使其成为对象: