实例之间的差异

时间:2012-02-29 17:42:47

标签: java jframe instance

一直在搞乱JFrames,我注意到了一些事情:

JFrame frame = new JFrame();

从我所知道的,可以说是完全相同的:

JFrame frame = JFrame.class.newInstance();

仅使用没有参数的默认实例时,这两种方式之间是否存在差异?

谢谢,

图例

3 个答案:

答案 0 :(得分:1)

newInstance()中的java.lang.Class方法使用无参数构造函数构造类的实例 - 所以不,两个JFrame将是相同的。

在运行时使用类名创建Class.newInstance()对象时,Class方法变得很重要 - 例如,从文件中读取类名。然后你可以说

String theClassName = ...;
Class clazz = Class.forName(theClassName);
Object o = clazz.newInstance();

现在,您有一个类的实例,在编译此代码时,该类的名称未知。如果您知道(按照惯例)命名类实现了某个接口或扩展了某个类,那么您可以将Object强制转换为该接口或类,并以这种方式使用它。例如,servlet容器如配置文件中所述加载servlet,或者Web浏览器加载以HTML命名的applet。

答案 1 :(得分:0)

答案 2 :(得分:0)

newInstance()会抛出两个必须处理的已检查异常,它会阻止编译器在你做错事时告诉你(比如尝试实例化一个抽象类)。

并且没有“默认实例”这样的东西。

相关问题