在这篇快速文章中,我们将讨论在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.ConstructornewInstance()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
标签:Java,name,void,创建对象,学生,Student,方法,public,String
From: https://blog.51cto.com/u_16145034/6515635