java 实例化类详解及简单实例

发布时间 - 2026-01-10 23:28:43    点击率:

 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 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Laravel storage目录权限问题_Laravel文件写入权限设置  JS碰撞运动实现方法详解  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  Laravel如何实现模型的全局作用域?(Global Scope示例)  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Firefox Developer Edition开发者版本入口  Laravel如何使用Vite进行前端资源打包?(配置示例)  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  在Oracle关闭情况下如何修改spfile的参数  如何快速生成ASP一键建站模板并优化安全性?  网站页面设计需要考虑到这些问题  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  如何在阿里云部署织梦网站?  Internet Explorer官网直接进入 IE浏览器在线体验版网址  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  Python结构化数据采集_字段抽取解析【教程】  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  Android 常见的图片加载框架详细介绍  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  如何在云指建站中生成FTP站点?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Python面向对象测试方法_mock解析【教程】  个人网站制作流程图片大全,个人网站如何注销?  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  如何在宝塔面板中创建新站点?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  大型企业网站制作流程,做网站需要注册公司吗?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  Python自动化办公教程_ExcelWordPDF批量处理案例  ,南京靠谱的征婚网站?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  iOS正则表达式验证手机号、邮箱、身份证号等  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  使用spring连接及操作mongodb3.0实例  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  轻松掌握MySQL函数中的last_insert_id()