您当前的位置:首页 > 互联网教程

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

发布时间:2025-05-13 08:58:17    发布人:远客网络

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

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

1.用new语句创建对象,这是最常见的创建对象的方法。

2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

4.运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

下面演示了用前面3种方式创建对象的过程:

public class Customer implements Cloneable{

System.out.println("call default constructor");

public Customer(String name,int age){

System.out.println("call second constructor");

public Object clone()throws CloneNotSupportedException{

public boolean equals(Object o){

if(!(o instanceof Customer)) return false;

final Customer other=(Customer)o;

if(this.name.equals(other.name)&& this.age==other.age)

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

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实例.

二、JAVA中反射是什么

JAVA中反射是动态获取信息以及动态调用对象方法的一种反射机制。

Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。而这也是Java被视为动态语言的一个关键性质。

Java反射的功能是在运行时判断任意一个对象所属的类,在运行时构造任意一个类的对象,在运行时判断任意一个类所具有的成员变量和方法,在运行时调用任意一个对象的方法,生成动态代理。

1、Class superClass=clazz.getSuperclass();//获取父类。

System.out.println("getSuperclass:"+superClass)。

2、Class[] interfaces=clazz.getInterfaces();//获取实现接口。

System.out.println("getInterfaces:"+interfaces.length)。

3、Constructor[] cons=clazz.getConstructors();//构造方法。

System.out.println("getConstructors:"+cons.length)。

参考资料来源:百度百科: JAVA反射机制

三、什么是反射什么Java反射

java反射是什么意思呢?下面带大家了解一下。

JAVA反射是指程序可以访问、检测和修改它本身状态或行为的一种能力。反射是一种强大的工具,能够创建灵活的代码,可以使代码在运行时装配,无需在组件之间进行源代表链接。

JAVA反射机制是在运行状态中,知道所有属性和方法,对于任意一个对象,能够调用它的方法和属性,这种动态获取的信息以及动态调用对象的方法的功能的反射机制。

首先我们先思考一个问题,反射适合使用在哪里呢?从功能上看,反射似乎无所不能,几乎所有的类,所有的属性、方法、构造我们都能使用,但是我们细细思考一下,在实际开发中,并不是所有场景都需要使用反射获取属性或者方法进行操作,反而更多的使用实例.xxx方式操作,而当这些操作重复次数较多的时候,我们往往会考虑优化代码,减少代码冗余,提高复用,比如实体构建赋值等操作,这个时候往往是我们最需要复用的地方,所以我们可以大体认为反射主要使用在实体操作过程中。而在一般操作数据的过程中,我们的实体一般都是知道并且依赖于对应的数据类型的,比如:

2.根据类型定义变量,类型可能是基本类型也可能是引用类型、类或者接口

4.根据类型访问对象的属性,调用方法等操作

以上这些操作都是数据操作的过程中最常见也是最难复用优化的地方,而如果这里的操作使用反射则可以实现动态的操作不同的类型的实例,通过调用反射入口类Class,获取对应的属性、构造、方法完成对应的操作