是否有另一种方法在java中创建对象而不是使用“new”关键字?

时间:2013-04-03 19:07:54

标签: java

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

4 个答案:

答案 0 :(得分:2)

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

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

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

new ObjectInputStream(anInputStream ).readObject();

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

Object otherObject = mainObject.clone();

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

答案 1 :(得分:1)

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

String x = "abc";
int[] y = {1, 2, 3}
Object z = classObject.newInstnce();

答案 2 :(得分:1)

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

查看以下代码(Java):

public class SimpleClass {

    public static SimpleClass instantiateAnObjectForMe() {

        return new SimpleClass();      

    } 
}

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

SimpleClass simpleObject = SimpleClass.instantiateAnObjectForMe();

我希望你明白这一点:)

答案 3 :(得分:0)

一个例子是Object.class.newInstance()。使用java反射有更复杂的方法here is one of many tutorials