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
 - 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实例化类的方法
                
                转载来于:http://www.csdahua.cn/qtweb/news23/535723.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网