有两种方法可以在java中创建对象吗?

Hea*_*d07 1 java initialization class object

有什么区别

ClassABC objectName = new ClassABC();
Run Code Online (Sandbox Code Playgroud)

ClassABC objectName = differentVariable.methodReturnsClassABCTypeValue();
Run Code Online (Sandbox Code Playgroud)

第二个例子是否仍然像第一个一样?如果不是,这两种"初始化"之间有什么区别?

如果这令人困惑,我将使用另一个Java类给出第二个示例.

Toolkit toolKitObject = Toolkit.getDefaultToolkit();
Dimension screenSize = new Dimension();
Run Code Online (Sandbox Code Playgroud)

Toolkit toolKitObject = Toolkit.getDefaultToolkit();
Dimension screenSize = toolKitObject.getScreenSize();
Run Code Online (Sandbox Code Playgroud)

请注意在第一个示例中我是如何创建Dimension对象并且没有为它设置任何值..但在第二个示例中,我从未使用过 new Dimension();我立即继续前进并且做了toolKitObject.getScreenSize();

Ach*_*Jha 13

在java中创建对象有不同的方法:

A.使用new关键字这是在java中创建对象的最常用方法.几乎99%的对象都是以这种方式创建的.

MyObject object = new MyObject();
Run Code Online (Sandbox Code Playgroud)

B.使用Class.forName()如果我们知道类的名称并且它是否有公共默认构造函数,我们可以用这种方式创建一个对象.

MyObject object = (MyObject) Class.forName("subin.rnd.MyObject").newInstance();
Run Code Online (Sandbox Code Playgroud)

C.使用clone()clone()可用于创建现有对象的副本.

MyObject anotherObject = new MyObject();
MyObject object = anotherObject.clone();
Run Code Online (Sandbox Code Playgroud)

D.使用对象反序列化对象反序列化只不过是从序列化形式创建对象.

ObjectInputStream inStream = new ObjectInputStream(anInputStream );
MyObject object = (MyObject) inStream.readObject();
Run Code Online (Sandbox Code Playgroud)

E.以另一种方式使用反射.

this.getClass().getClassLoader().loadClass(“com.abc.myobject”).newInstance();
Run Code Online (Sandbox Code Playgroud)