在java中创建对象到底有多少种方法?

如题所述

Java中创建对象的四种方式
1.用new语句创建对象,这是最常见的创建对象的方法。
2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
3.调用对象的clone()方法。
4.运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
下面演示了用前面3种方式创建对象的过程:

public class Customer implements Cloneable{
private String name;
private int age;
public Customer(){
this("unknown",0);
System.out.println("call default constructor");
}
public Customer(String name,int age){
this.name=name;
this.age=age;
System.out.println("call second constructor");
}
public Object clone()throws CloneNotSupportedException{
return super.clone();
}
public boolean equals(Object o){
if(this==o)return true;
if(! (o instanceof Customer)) return false;
final Customer other=(Customer)o;
if(this.name.equals(other.name) && this.age==other.age)
return true;
else
return false;
}
public String toString(){
return "name="+name+",age="+age;
}
public static void main(String args[])throws Exception{
//运用反射手段创建Customer对象
Class objClass=Class.forName("Customer");
Customer c1=(Customer)objClass.newInstance(); //会调用Customer类的默认构造方法
System.out.println("c1: "+c1); //打印name=unknown,age=0

//用new语句创建Customer对象
Customer c2=new Customer("Tom",20);
System.out.println("c2: "+c2); //打印name=tom,age=20

//运用克隆手段创建Customer对象
Customer c3=(Customer)c2.clone(); //不会调用Customer类的构造方法
System.out.println("c2==c3 : "+(c2==c3)); //打印false
System.out.println("c2.equals(c3) : "+c2.equals(c3)); //打印true
System.out.println("c3: "+c3); //打印name=tom,age=20
}
}

除了以上4种显式地创建对象的方式以外,在程序中还可以隐含地创建对象,包括以下几种情况:
1.对于java命令中的每个命令行参数,Java虚拟机都会创建相应的String对象,并把它们组织到一个String数组中,再把该数组作为参数传给程序入口main(String args[])方法。
2.程序代码中的String类型的直接数对应一个String对象。
3.字符串操作符“+”的运算结果为一个新的String对象。
4.当Java虚拟机加载一个类时,会隐含地创建描述这个类的Class实例.
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-03-18
1.用new语句创建对象

2.运用反射手段,调用java.lang.Class 或者 java.lang.reflect.Constructor 类的newInstance()实例方法
3.调用对象的clone()方法
4.运用序列化手段,调用java.io.ObjectInputStream 对象的 readObject()方法.
原来已经有人回答了......

java创建对象的几种方法
Java创建对象的几种方法如下:使用new关键字创建对象,例如:MyClass myObject = new MyClass();使用工厂方法创建对象,例如:MyClass myObject = MyClass.create();使用Builder模式创建对象,例如:MyClass myObject = new MyClassBuilder().build();使用单例模式创建对象,例如:MyClass myObject =...

Java如何创建对象?
Java有5种方式来创建对象:1、使用 new 关键字(最常用):ObjectName obj = new ObjectName();2、使用反射的Class类的newInstance()方法:ObjectName obj = ObjectName.class.newInstance();3、使用反射的Constructor类的newInstance()方法:ObjectName obj = ObjectName.class.getConstructor.newInstance(...

在java中创建对象到底有多少种方法?
1.用new语句创建对象,这是最常见的创建对象的方法。2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。3.调用对象的clone()方法。4.运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。下面演示了用前面3种方式创建对象的过程:public...

JAVA创建对象有哪几种方式?
Java中创建对象的四种方法 收藏Java中创建对象的四种方式\\x0d\\x0a1.用new语句创建对象,这是最常见的创建对象的方法。\\x0d\\x0a2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。\\x0d\\x0a3.调用对象的clone()方法。\\x0d\\x0a4.运用反序列化手段...

JAVA创建对象有哪几种方式 ???
JAVA创建对象的四种方式:有4种显式地创建对象的方式:1.用new语句创建对象,这是最常用的创建对象的方式。2.运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。3.调用对象的clone()方法。4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject(...

Java 创建对象的四种方法
一、使用new方式创建对象是Java中最基本也是最常用的方法。通过new操作符,我们可以直接实例化一个类,从而创建出一个新对象。二、使用反射机制创建对象可以让我们在运行时动态地获取类信息,生成对象。这种灵活性在某些特定场景下非常有用,如动态加载类或对象。四、序列化创建对象是将对象的状态信息转换为...

java对象的五种创建方式!
本文介绍了Java对象的五种创建方式,分别包括:使用构造器创建对象、利用类的反射机制、序列化方式构造实例对象、使用Object的clone方法以及利用Objenesis来实例化对象。构造器创建对象是最常见的方式,例如,可以使用People people = new People("lili", "china");来创建一个People对象。这种方式适用于拥有无...

你应该知道的Java创建对象的四种方式
首先,使用new运算符创建对象是最直接的方式。例如,创建一个表示宠物的类Dog,通过new Dog("小黑", 3)语句,我们可以实例化出一个名为"小黑",年龄为3岁的Dog对象。其次,Java的反射技术允许在运行时获取类的信息并操作对象。通过反射可以创建对象并访问其属性和方法。获取类对象后,调用newInstance()...

java对象实例化的几种方法
1、用new语句创建对象,这是最常见的创建对象的方法。2、通过工厂方法返回对象,如:String str = String.valueOf(23);3、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。如:Object obj = Class.forName("java.lang.Object").newInstance();4、调用对象...

java常用的设计模式一共有多少种
1、正如上一位答主所言,java中存在23种面向对象的设计模式,分别是:1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。3)行为型模式,共十一种:策略模式、...

相似回答