当前位置: 首页 » 综合知识 » it知识 » 正文

Java如何实例化类

发布时间:2023-07-25 以下文章来源于网友投稿,内容仅供参考!

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();   }   }
  • • Linux Ecdsa密钥长度选择有何依据

    在Linux

  • • Linux Khook在内核监控中的应用如何

    Linux

  • • Linux Gsoap是否支持异步通信

    GSOAP是

  • • Linux Coremail如何提升用户体验

    提升Linu

  • • Linux Ecdsa算法有哪些局限性

    ECDSA

  • 哎呀音乐钢琴键盘学习《 钢琴主人训练营》 西瓜学琴
    郭蝈 陪练钢琴 30节课时 考级刚需 让孩子每一次练琴都是高质量的
    30天轻松学会五线谱 流行钢琴自学初级教程 牙牙学琴
    流行爵士钢琴实战技巧VIP课 - 继伟 哎呀音乐
    【海上钢琴师】原版 MT1990钢琴谱
    百首经典流行钢琴实战曲集 - 继伟
    雷费尔德电钢琴重锤88键专业考级儿童初学者数码电子钢琴家用
    小练咖 真人钢琴陪练 1v1服务 2999随时退 1课时50分钟 考级刚需
    雅马哈电钢琴88键重锤CLP735智能数码电子钢琴家用专业初学者考级
    【原装进口】Yamaha/雅马哈钢琴 b121 SC2原声静音钢琴
  • 珠海专业调钢琴
  • 天津宝坻区调钢琴
  • 天津静海区钢琴调音
  • 成都简阳市钢琴调律
  • 大连瓦房店市钢琴调音
  • 眉山调钢琴联系方式
  • 惠州大亚湾钢琴调琴师
  • 长治调琴师
  • 厦门湖里区钢琴调音师
  • 上海普陀区钢琴调音师