首页 > 编程语言 >在Java中创建对象的不同方法是什么?

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

时间:2023-06-19 16:33:59浏览次数:46  
标签:Java name void 创建对象 学生 Student 方法 public String


在这篇快速文章中,我们将讨论在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

相关文章

  • 工厂方法设计模式
    工厂方法模式使我们能够在不将创建逻辑暴露给客户端的情况下创建对象,并使用通用接口引用新创建的对象。它是最广泛使用的创作模式之一。此模式也称为  虚拟构造函数。根据 Gamma等人的DesignPatterns,这种模式的目的  是:定义用于创建对象的接口,但让子类决定实例化哪个类。Fact......
  • Java_Jdbc_连接池的testQuery/validationQuery设置
     JDBC连接池的testQuery/validationQuery设置 在《Tomcat中使用Connector/J连接MySQL的超时问题》帖子中想要增加对连接池中连接的测试/验证,防止数据库认为连接已死而Web应用服务器认为连接还有效的问题,Mysql文档中提到Tomcat文档中的例子中用的是validationQuery,但是网......
  • 【电商平台api接口】获取lazada商品评论获取评论内容、评论日期、买家昵称、评论商品
    ​ 请求获取Lazada商品评论(免费获取测试)的作用如下:1.了解商品质量:通过获取Lazada商品评论,可以了解商品的质量、使用感受等信息,从而更好地了解商品的优缺点,为购买者提供更为准确的参考。2.搜集用户反馈:通过搜集Lazada商品评论,可以了解用户对商品的反馈和意见,了解用户的需求和......
  • java反序列化(六)
    fastjson反序列化前置知识fastjson是阿里巴巴开发的一个处理json数据的开源库,简简单单解析一个json字符串是自然不会造成命令执行的,问题在于很多库为了实用性会额外实现一些功能,造成了攻击点fastjson简单使用引入依赖,先用古老版本<dependency><groupId>......
  • Linux建立虚拟ip的方法
    1、虚拟ip的介绍 虚拟IP地址(VIP)是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址。数据包被发送到这个VIP地址,但是所有的数据还是经过真实的网络接口。上边是百度的定义。就是一块网卡上边有两个ip,然后无论到哪个ip的流量都会经过物理网卡。 2、虚拟i......
  • java~搞懂Comparable接口的compareTo方法
    Comparable接口的compareTo方法的升序或降序取决于实现该接口的类的具体实现。按照惯例,compareTo方法应该返回负数、零或正数来指示当前对象是小于、等于还是大于传入的对象。具体来说:如果this对象小于传入的对象,则compareTo应该返回负数。如果this对象等于传入的对......
  • JavaScript的数学计算库:decimal.js
    Anarbitrary-precisionDecimaltypeforJavaScript.功能整数和浮点数简单但功能齐全的API复制JavaScript和对象的许多方法Number.prototypeMath还处理十六进制、二进制和八进制值比Java的BigDecimalJavaScript版本更快,更小,也许更容易使用无依赖关系广泛的平......
  • Java 运算符的使用
    Java运算符的使用1.算术运算符算术运算符包括:+,-,*,/,%,++,--,其中需要注意的是%,++,--;%取模运算也叫做取余,在Java中取余的规则:a%b=a-a/b*b++和--叫做自增运算即+1或-1++在前,先自加,后赋值++在后,先赋值,后自加(--运算与自增用法类似)2.算......
  • Java学习_第一个语法:添加注释
    单行注释://注释内容多行注释:/* 注释内容*/idea软件小技巧:多行注释往往容易找不到重点,可以在要做的事之前加上TODO前缀,idea软件会帮你高亮标注出来。 ......
  • Android面试涨薪攻略指南:Android面试必知必会Java知识点
    前言大多数面试者,虽然看起来工作努力,但他们表现出来的能力水平,却不足以通过面试,或拿到期望的薪资。在我看来,造成这种情况的原因,主要有这么两方面:第一,“知其然不知其所以然”。做了几年技术,开发了一些业务应用,但没有思考过这些技术选择背后的逻辑。所以,公司很难定位你日后的成长潜力......