在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(); } } }输出:
拉梅什 ABC4.使用对象反序列化
在这种方法中,我们将使用 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(); } } }输出:
拉梅什 ABC5.使用对象克隆 - 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扫一扫,关注我们