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

使用接受字符串参数的构造函数实例化类对象?

邓崇凛
2023-03-14
问题内容

我想Class使用接受单个String参数的构造函数从其对象实例化一个对象。

这是一些符合我想要的代码:

Object object = null;
Class classDefinition = Class.forName("javax.swing.JLabel");
object = classDefinition.newInstance();

但是,它实例化JLabel没有文本的对象。我想使用JLabel接受字符串作为初始文本的构造函数。有没有一种方法可以从Class对象中选择特定的构造函数?


问题答案:

Class.newInstance调用no-
arg构造函数(不带任何参数的构造函数)。为了调用其他构造函数,您需要使用反射包(java.lang.reflect)。

获取一个Constructor这样的实例:

Class<?> cl = Class.forName("javax.swing.JLabel");
Constructor<?> cons = cl.getConstructor(String.class);

的调用getConstructor指定您要使用单个String参数的构造函数。现在创建一个实例:

Object o = cons.newInstance("JLabel");

这样就完成了。

PS仅将反射用作最后的选择!



 类似资料:
  • 问题内容: 在Java中,以以下方式初始化String数组是完全合法的: 但是,当尝试实例化以String数组作为参数的类时,不允许以下代码: 但这再次起作用: 有人可以解释为什么吗? 问题答案: String[] s = {“FOO”, “BAR”}; 仅在声明时允许 你不能

  • 问题内容: 我不明白原始是如何转换为char数组的。如果我尝试使用其他代码,则会引发编译错误。 问题答案: 有两个属性: 因为您位于的构造函数中,所以您有权访问其私有字段和。 您无法从String类的外部访问这些字段,因此,如果尝试执行此操作,将抛出编译错误。

  • 问题内容: 如何从Java的构造函数中获取实例化对象? 我想为某些GUI类存储对父对象的引用,以模拟事件冒泡-调用父处理程序-但我不想更改所有现有代码。 问题答案: 简短的回答:Java没有办法做到这一点。(您可以找到哪个班级叫您,但以下较长的答案在大多数情况下也适用于您。) 长话大说:依赖于被调用的地方,魔术地表现不同的代码几乎总是一个坏主意。这会使必须维护您代码的人感到困惑,并且严重损害了您的

  • 我有一个有两个构造函数的类。 有一个具有两个构造函数的类Sample。需要在Sample类中实例化另外三个类(ClassOne,ClassTwo和ClassIII)。所有三个类都包含默认和参数化构造函数。如果调用了Sample类的默认构造函数,则应调用ClassOne,ClassTwo和ClassIII的默认辅助构造函数。如果调用Samples参数化构造函数,则调用ClassOne、ClassII

  • 我最近了解了Java字符串池,有几件事我不太明白。 使用赋值操作符时,如果字符串池中不存在新字符串,则将在字符串池中创建新字符串。 当使用String构造函数时,我明白无论String池的状态如何,都将在堆中、String池之外创建一个新字符串。 我在某处读到过,即使在使用构造函数时,也在使用字符串池。它将把字符串插入到字符串池和堆中。 我没有找到任何关于这方面的进一步信息,但我想知道这是不是真的