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
相关文章:
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
青岛网站建设如何选择本地服务器?
建站之星logo尺寸如何设置最合适?
已有域名如何快速搭建专属网站?
名字制作网站免费,所有小说网站的名字?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
行程制作网站有哪些,第三方机票电子行程单怎么开?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
孙琪峥织梦建站教程如何优化数据库安全?
XML的“混合内容”是什么 怎么用DTD或XSD定义
黑客入侵网站服务器的常见手法有哪些?
建站VPS配置与SEO优化指南:关键词排名提升策略
表情包在线制作网站免费,表情包怎么弄?
如何选择高效稳定的ISP建站解决方案?
如何打造高效商业网站?建站目的决定转化率
建站之星上传入口如何快速找到?
小建面朝正北,A点实际方位是否存在偏差?
购物网站制作公司有哪些,哪个购物网站比较好?
如何基于云服务器快速搭建网站及云盘系统?
兔展官网 在线制作,怎样制作微信请帖?
如何快速搭建自助建站会员专属系统?
山东云建站价格为何差异显著?
长沙企业网站制作哪家好,长沙水业集团官方网站?
高防服务器租用首荐平台,企业级优惠套餐快速部署
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
,sp开头的版面叫什么?
深圳网站制作案例,网页的相关名词有哪些?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
深入理解Android中的xmlns:tools属性
如何在建站之星网店版论坛获取技术支持?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
大连网站设计制作招聘信息,大连投诉网站有哪些?
建站之星在线客服如何快速接入解答?
网站制作企业,网站的banner和导航栏是指什么?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
如何快速辨别茅台真假?关键步骤解析
创业网站制作流程,创业网站可靠吗?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
网站制作服务平台,有什么网站可以发布本地服务信息?
如何选择美橙互联多站合一建站方案?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
油猴 教程,油猴搜脚本为什么会网页无法显示?
如何快速搭建安全的FTP站点?
linux top下的 minerd 木马清除方法
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
*请认真填写需求信息,我们会在24小时内与您取得联系。