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


相关推荐: 手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  JavaScript如何实现类型判断_typeof和instanceof有什么区别  如何为不同团队 ID 动态生成多个“认领值班”按钮  EditPlus 正则表达式 实战(3)  iOS中将个别页面强制横屏其他页面竖屏  怎样使用JSON进行数据交换_它有什么限制  手机网站制作与建设方案,手机网站如何建设?  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  Linux系统命令中tree命令详解  Laravel如何自定义分页视图?(Pagination示例)  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  Laravel中的withCount方法怎么高效统计关联模型数量  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  微信小程序 canvas开发实例及注意事项  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  如何实现javascript表单验证_正则表达式有哪些实用技巧  Laravel Session怎么存储_Laravel Session驱动配置详解  EditPlus中的正则表达式实战(6)  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  Android利用动画实现背景逐渐变暗  Laravel如何使用查询构建器?(Query Builder高级用法)  如何快速搭建高效简练网站?  如何快速搭建安全的FTP站点?  如何快速搭建个人网站并优化SEO?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  如何在IIS7上新建站点并设置安全权限?  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  ,网页ppt怎么弄成自己的ppt?  Laravel中的Facade(门面)到底是什么原理  如何挑选最适合建站的高性能VPS主机?  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  百度浏览器如何管理插件 百度浏览器插件管理方法  PHP 500报错的快速解决方法  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Python文件异常处理策略_健壮性说明【指导】  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  深圳网站制作培训,深圳哪些招聘网站比较好?