Java 实例化类的方法

Java中,类的实例化方法有四种途径:
1)使用new操作符
2)调用Class对象的newInstance()方法
3)调用clone()方法,对现有实例的拷贝
4)通过ObjectInputStream的readObject()方法反序列化类
1.ClassInstance.java
import java.io.*;
class ClassInstance implements Cloneable, Serializable {
private String str = "测试...";
public void fun(){
System.out.println(str);
}
public ClassInstance(String str){
System.out.println("有参类的实例化");
this.str += str;
}
public ClassInstance(){
System.out.println("无参类的实例化");
}
public Object clone(){
return this;
}
}
2.ClassInstanceTest.java
import java.io.*;
import java.lang.reflect.*;
public class ClassInstanceTest{
public static void main(String[] args) throws ClassNotFoundException, InstantiationException,
IllegalAccessException, IOException,InvocationTargetException, NoSuchMethodException{
//第一种类的实例化方式
ClassInstance ci01 = new ClassInstance("01");
ci01.fun();
//第二种类的实例化方式
ClassInstance ci02 = (ClassInstance) Class.forName("ClassInstance").newInstance();
ci02.fun();
//第三种类的实例化方式
ClassInstance ci03 = (ClassInstance) ci01.clone();
ci03.fun();
//第四种类的实例化方式
FileOutputStream fos = new FileOutputStream("ci.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(ci01);
oos.close();
fos.close();
FileInputStream fis = new FileInputStream("ci.tmp");
ObjectInputStream ois = new ObjectInputStream(fis);
ClassInstance ci04 = (ClassInstance) ois.readObject();
ois.close();
fis.close();
ci04.fun();
System.out.println("--------------------额外测试--------------------");
ClassInstance ci05 = null;
//额外的思考 在第二种类实例化的方式中有没有一种方法实现有参数的构造方式
//获得类的构造信息
Constructor[] ctor = Class.forName("ClassInstance").getDeclaredConstructors();
//找到我们需要的构造方法
for(int i=0;i<ctor.length;i++ ){
Class[] cl = ctor[i].getParameterTypes();
if(cl.length == 1){
//实例化对象
ci05 = (ClassInstance) Class.forName("ClassInstance").getConstructor(cl).newInstance(new Object[]{"05"});
}
}
ci05.fun();
}
}
3.输出结果
有参类的实例化 测试...01 无参类的实例化 测试... 测试...01 测试...01 -------------------额外测试-------------------- 有参类的实例化 测试...05
除了这几种情况可以实例化一个Java类对象外,隐式调用实例化也是利用了已上集中情况。例如常见的方法:
public class ClassInstance{
public ClassInstance(){
}
public ClassInstance getInstance(){
return new ClassInstance();
}
}
通过观察结果,我们发现无论哪一种方式必须经过的一步---调用构造方法。无论怎样构造函数作为初始化类的意义怎样都不会改变。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# 实例化类
# 实例化类详解及实例
# 实例化类实例代码
# Java实例化一个抽象类对象的方法教程
# Java类初始化和实例化中的2个“雷区”
# Java实例化类详解
# 浅谈Java中类的实例化步骤
# 简单了解java类的初始化以及类的实例化
# Java子类对象的实例化过程分析
# Java中类的定义与实例化详解
# 中有
# 希望能
# 几种
# 四种
# 谢谢大家
# 哪一种
# 已上
# 序列化
# 隐式
# System
# println
# str
# fun
# private
# String
# void
# public
# 有参类
# reflect
# lang
相关文章:
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何在宝塔面板创建新站点?
全景视频制作网站有哪些,全景图怎么做成网页?
建站主机与虚拟主机有何区别?如何选择最优方案?
如何在Windows虚拟主机上快速搭建网站?
建站之星官网登录失败?如何快速解决?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
如何基于云服务器快速搭建网站及云盘系统?
建站主机选购指南:核心配置优化与品牌推荐方案
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
专业网站建设制作报价,网页设计制作要考什么证?
如何通过cPanel快速搭建网站?
小型网站制作HTML,*游戏网站怎么搭建?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
建站ABC备案流程中有哪些关键注意事项?
开心动漫网站制作软件下载,十分开心动画为何停播?
linux top下的 minerd 木马清除方法
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
山东网站制作公司有哪些,山东大源集团官网?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何有效防御Web建站篡改攻击?
公司网站的制作公司,企业网站制作基本流程有哪些?
如何在阿里云虚拟服务器快速搭建网站?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站主机选购指南:核心配置与性价比推荐解析
如何用虚拟主机快速搭建网站?详细步骤解析
金*站制作公司有哪些,金华教育集团官网?
建站之星如何实现PC+手机+微信网站五合一建站?
江苏网站制作公司有哪些,江苏书法考级官方网站?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
大学网站设计制作软件有哪些,如何将网站制作成自己app?
如何选择PHP开源工具快速搭建网站?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
如何配置WinSCP新建站点的密钥验证步骤?
建站之星安装失败:服务器环境不兼容?
建站主机选哪种环境更利于SEO优化?
如何获取上海专业网站定制建站电话?
模具网站制作流程,如何找模具客户?
如何在IIS7中新建站点?详细步骤解析
建站与域名管理如何高效结合?
网站制作公司排行榜,四大门户网站排名?
音响网站制作视频教程,隆霸音响官方网站?
定制建站价位费用解析与套餐推荐全攻略
h5网站制作工具有哪些,h5页面制作工具有哪些?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
如何通过虚拟主机快速搭建个人网站?
建站之星微信建站一键生成小程序+多端营销系统
*请认真填写需求信息,我们会在24小时内与您取得联系。