在Java中创建对象的不同方法是什么?

发布时间:2025-09-02 01:21:55 作者:益华网络 来源:undefined 浏览量(0) 点赞(0)
摘要:在这篇快速文章中,我们将讨论在Java中创建对象的五种不同方法。 我们知道,类是创建对象的模板或蓝图。

在这篇快速文章中,我们将讨论在Java中创建对象的五种不同方法。 我们知道,类是创建对象的模板或蓝图。 让我们列出在Java中创建对象的不同方法。

用Java创建对象的5种不同方法

1.使用新关键字

2.使用   newInstance()  Class类的方法

3.使用   newInstance()  Constructor类的方法

4.使用对象反序列化

5.使用对象克隆 -   clone() 方法

使用新关键字

这是在Java中创建对象的最流行的方法,我们已在上面讨论过;  几乎每个Java Developer都知道这种方法。

包 网。javaguides。corejava。哎呀 ; 公立 班 学生 {     私有 字符串 名称 ;     私人 弦乐 学院 ;     public  Student(String  name,String  college){         super();         这个。name  =  name ;         这个。大学 =  大学 ;     }     public  String  getName(){         返回 名称 ;     }     public  void  setName(String  name){         这个。name  =  name ;     }     public  String  getCollege(){         回归 大学 ;     }     public  void  setCollege(String  college){         这个。大学 =  大学 ;     }     public  static  void  main(String [] args){         学生 学生 =  新的 学生(“拉梅什”,“BVB”);         学生 STUDENT2  =  新的 学生(“普拉卡什”,“GEC”);         学生 学生三 =  新的 学生(“普拉莫德”,“个人所得税”);     } }

从上面的代码中,我们 使用 new 关键字 创建   Student 对象  

学生 学生 =  新的 学生(“拉梅什”,“BVB”); 学生 STUDENT2  =  新的 学生(“普拉卡什”,“GEC”); 学生 学生三 =  新的 学生(“普拉莫德”,“个人所得税”);

2.使用类的newInstance()方法

Class.forName() 将动态加载该类,它间接将为您提供“类类”对象。 加载类后,我们将使用该 newInstance() 方法动态创建对象。 让我们 在这里 Student 创建一个Java对象

包 网。javaguides。corejava。哎呀 ; 公立 班 学生 {     private  String  name  =  “Ramesh” ;     private  String  college  =  “ABC” ;     公共 学生(){         super();     }     public  Student(String  name,String  college){         super();         这个。name  =  name ;         这个。大学 =  大学 ;     }     public  String  getName(){         返回 名称 ;     }     public  void  setName(String  name){         这个。name  =  name ;     }     public  String  getCollege(){         回归 大学 ;     }     public  void  setCollege(String  college){         这个。大学 =  大学 ;     }     public  static  void  main(String [] args){         尝试 {             String  className  =  “net.javaguides.corejava.oops.Student” ;             class  clasz  =  Class。forName(className);             学生 学生 =(学生)clasz。newInstance();             系统。出。的println(学生。的getName());             系统。出。的println(学生。getCollege());         } catch(InstantiationException  |  IllegalAccessException  |  ClassNotFoundException  e){             e。printStackTrace();         }     } }

输出:

拉梅什 ABC

该   forName()  方法返回与具有给定字符串名称的类或接口关联的Class对象。

class  clasz  =  Class。forName(className);

newInstance()  方法创建此Class对象表示的类的新实例。

学生 学生 =(学生)clasz。newInstance(); 系统。出。println(学生);

3.使用构造函数类的newInstance()方法

Class newInstance()  方法 类似,   类中有一个  方法    ,我们可以用它来创建对象。 我们还可以使用此 方法 调用参数化构造函数和私有构造函数   让我们通过 使用类的  方法    创建 Student 类对象来    演示这种方法   newInstance() java.lang.reflect.Constructor newInstance() newInstance() java.lang.reflect.Constructor

包 网。javaguides。corejava。哎呀 ; 导入 java。郎。反思。构造函数 ; 导入 java。郎。反思。InvocationTargetException ; 公立 班 学生 {     private  String  name  =  “Ramesh” ;     private  String  college  =  “ABC” ;     公共 学生(){         super();     }     public  Student(String  name,String  college){         super();         这个。name  =  name ;         这个。大学 =  大学 ;     }     public  String  getName(){         返回 名称 ;     }     public  void  setName(String  name){         这个。name  =  name ;     }     public  String  getCollege(){         回归 大学 ;     }     public  void  setCollege(String  college){         这个。大学 =  大学 ;     }     public  static  void  main(String  args []){         构造函数 <  Student  >  构造函数 ;         尝试 {             constructor  =  学生。上课。getConstructor();             学生 学生 =  构造。newInstance();             系统。出。的println(学生。的getName());             系统。出。的println(学生。getCollege());         } catch(InstantiationException  |  IllegalAccessException  |  IllegalArgumentException  |  InvocationTargetException  |             NoSuchMethodException  |  SecurityException  e){             // TODO自动生成的catch块             e。printStackTrace();         }     } }

输出:

拉梅什 ABC

4.使用对象反序列化

在这种方法中,我们将使用 Java中的 Serializable 接口,它是一个标记接口(没有主体的方法),用于将Java  学生 对象 s1 序列 化为文本文件(sample.txt),并使用对象反序列化,我们将阅读并将其分配给新的 Student 对象 s2

包 网。javaguides。corejava。哎呀 ; 导入 java。io。可序列化 ; public  class  Student  实现 Serializable {  私有 字符串 名称 ;  私人 弦乐 学院 ;  公共 学生(){   super();  }  public  Student(String  name,String  college){   super();   这个。name  =  name ;   这个。大学 =  大学 ;  }  public  String  getName(){   返回 名称 ;  }  public  void  setName(String  name){   这个。name  =  name ;  }  public  String  getCollege(){   回归 大学 ;  }  public  void  setCollege(String  college){   这个。大学 =  大学 ;  } } 包 网。javaguides。corejava。哎呀 ; 导入 java。io。FileInputStream ; 导入 java。io。FileOutputStream ; 导入 java。io。ObjectInputStream ; 导入 java。io。ObjectOutputStream ; 公共 课 StudentDemo {     public  static  void  main(String [] args){         //存储Serialized对象的路径         String  filePath  =  “sample.txt” ;         学生 s1  =  新 学生(“Ramesh”,“ABC”);         尝试 {             FileOutputStream  fileOutputStream  =  new  FileOutputStream(filePath);             ObjectOutputStream  outputStream  =  new  ObjectOutputStream(fileOutputStream);             outputStream。writeObject(s1);             outputStream。flush();             outputStream。close();             FileInputStream  fileInputStream  =  new  FileInputStream(filePath);             ObjectInputStream  inputStream  =  new  ObjectInputStream(fileInputStream);             学生 s2  =(学生)inputStream。readObject();             inputStream。close();             系统。出。的println(S2。的getName());             系统。出。的println(S2。getCollege());         } catch(Exception  ee){             ee。printStackTrace();         }     } }

输出:

拉梅什 ABC

5.使用对象克隆 - clone()方法

clone() 方法用于创建现有对象的副本。 为了实现该    clone()  方法,相应的类应该已经实现了 Cloneable 接口,该接口又是Marker接口。 在这种方法中,我们将为 Student 类“student1”  创建一个对象,   并使用该   clone()  方法将其克隆为“student2”对象:

包 网。javaguides。corejava。哎呀 ; 导入 java。io。可序列化 ; public  class  Student  实现 Cloneable {     私有 字符串 名称 ;     私人 弦乐 学院 ;     公共 学生(){         super();     }     public  Student(String  name,String  college){         super();         这个。name  =  name ;         这个。大学 =  大学 ;     }     public  String  getName(){         返回 名称 ;     }     public  void  setName(String  name){         这个。name  =  name ;     }     public  String  getCollege(){         回归 大学 ;     }     public  void  setCollege(String  college){         这个。大学 =  大学 ;     }     public  static  void  main(String  args []){         学生 student1  =  新 学生(“Ramesh”,“ABC”);         尝试 {             学生 2  =(学生)学生1。clone();             系统。出。的println(STUDENT2。的getName());             系统。出。的println(STUDENT2。getCollege());         } catch(CloneNotSupportedException  e){             e。printStackTrace();         }     } }

输出:

拉梅什 ABC

二维码

扫一扫,关注我们

声明:本文由【益华网络】编辑上传发布,转载此文章须经作者同意,并请附上出处【益华网络】及本页链接。如内容、图片有任何版权问题,请联系我们进行处理。

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,公众号系统,软件开发等

立即咨询 15368564009
在线客服
嘿,我来帮您!