3

我的一位讲师说,还有一些其他方法可以在 Java 中创建/实例化对象,而不是使用“new”关键字。如果可能的话,请指导我如何做到这一点?

4

4 回答 4

2

看起来更像是一个面试问题,但我仍然会回答它:)

反射是创建对象实例的一种方法。您可以Class.forName("abc.de.FGH").newInstance()创建一个实例

另一种方法是使用反序列化,假设对象是序列化的。

new ObjectInputStream(anInputStream ).readObject();

我能想到的另一种方法是克隆。

Object otherObject = mainObject.clone();

原始类型、字符串文字是创建对象的其他方式,尽管它们特定于某些类型。

于 2013-04-03T19:13:38.523 回答
1

是的,您可以使用反射或自动装箱机制或语言内置的任何其他文字来创建对象。

String x = "abc";
int[] y = {1, 2, 3}
Object z = classObject.newInstnce();
于 2013-04-03T19:10:28.367 回答
1

是的,对象是使用“new”关键字实例化的。但这并不意味着它们只能以这种方式实例化。

看看下面的代码(Java):

public class SimpleClass {

    public static SimpleClass instantiateAnObjectForMe() {

        return new SimpleClass();      

    } 
}

然后在你项目的其他地方,你可以通过调用我上面写的静态方法来创建类的实例,如下所示:

SimpleClass simpleObject = SimpleClass.instantiateAnObjectForMe();

我希望你能明白:)

于 2013-04-03T19:33:39.763 回答
0

一个例子是Object.class.newInstance()。使用 java 反射还有更复杂的方法,这里是众多教程之一

于 2013-04-03T19:11:09.377 回答