`
doris1bruce
  • 浏览: 4646 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java中,类的实例化方法有四种途径

阅读更多

Java中,类的实例化方法有四种途径:

1)使用new操作符

2)调用Class对象的newInstance()方法

3)调用clone()方法,对现有实例的拷贝

4)通过ObjectInputStream的readObject()方法反序列化类

1.ClassInstance.java

复制代码
 1 import java.io.*;
 2 
 3 class ClassInstance implements Cloneable, Serializable {
 4     private String str = "测试...";
 5     public void fun(){
 6         System.out.println(str);
 7     }
 8     public ClassInstance(String str){
 9         System.out.println("有参类的实例化");
10         this.str += str; 
11     }
12     public ClassInstance(){
13         System.out.println("无参类的实例化");
14     }
15     public Object clone(){
16         return this;
17     }
18 }
复制代码

2.ClassInstanceTest.java

复制代码
 1 import java.io.*;
 2 import java.lang.reflect.*;
 3 
 4 public class ClassInstanceTest{
 5     public static void main(String[] args) throws ClassNotFoundException, InstantiationException,
 6            IllegalAccessException, IOException,InvocationTargetException, NoSuchMethodException{
 7         //第一种类的实例化方式
 8         ClassInstance ci01 = new ClassInstance("01");
 9         ci01.fun();
10 
11         //第二种类的实例化方式
12         ClassInstance ci02 = (ClassInstance) Class.forName("ClassInstance").newInstance();
13         ci02.fun();
14 
15         //第三种类的实例化方式
16         ClassInstance ci03 = (ClassInstance) ci01.clone();
17         ci03.fun();
18 
19         //第四种类的实例化方式
20         FileOutputStream fos = new FileOutputStream("ci.tmp");
21         ObjectOutputStream oos = new ObjectOutputStream(fos);
22         oos.writeObject(ci01);
23         oos.close();
24         fos.close();
25         
26         FileInputStream fis = new FileInputStream("ci.tmp");
27         ObjectInputStream ois = new ObjectInputStream(fis);
28         
29         ClassInstance ci04  = (ClassInstance) ois.readObject();
30         ois.close();
31         fis.close();
32         
33         ci04.fun();
34         System.out.println("--------------------额外测试--------------------");
35         ClassInstance ci05 = null;
36         //额外的思考 在第二种类实例化的方式中有没有一种方法实现有参数的构造方式
37         //获得类的构造信息
38         Constructor[] ctor = Class.forName("ClassInstance").getDeclaredConstructors();
39         //找到我们需要的构造方法
40         for(int i=0;i<ctor.length;i++ ){
41             Class[] cl = ctor[i].getParameterTypes();
42             if(cl.length == 1){
43                 //实例化对象
44                 ci05 = (ClassInstance) Class.forName("ClassInstance").getConstructor(cl).newInstance(new Object[]{"05"});
45             }
46         }
47         ci05.fun();
48     }
49 }
复制代码

 

 

3.输出结果

复制代码
1 有参类的实例化
2 测试...01
3 无参类的实例化
4 测试...
5 测试...01
6 测试...01
7 -------------------额外测试--------------------
8 有参类的实例化
9 测试...05
复制代码
分享到:
评论

相关推荐

    Java项目开发实例

    * 在 MyLibraryDesktopApp.java 的可视编辑器中,添加事件处理方法。 * 为上小节新建的“添加”按钮添加事件。 * 在事件处理方法中,添加相应的逻辑代码,使得点击“添加”按钮时,可以执行相应的操作。 5.掌握 ...

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

    在 Java 中,类的实例化方法有四种途径:使用 new 操作符、调用 Class 对象的 newInstance() 方法、调用 clone() 方法,对现有实例的拷贝、通过 ObjectInputStream 的 readObject() 方法反序列化类。 第一种类的...

    java源代码:220个JAVA初学者实例集合

    对于初学者来说,通过实例学习是掌握Java语法和编程概念的重要途径。"220个JAVA初学者实例集合"提供了丰富的实践机会,帮助新手快速上手。 这个资源包中包含了220个精心设计的Java程序实例,旨在覆盖Java的基础到...

    java开发实例100例之一

    Java开发实例是初学者熟悉编程语言的关键途径,它们提供了实际操作的经验,有助于理解Java的核心概念。以下是一些基于给定的文件名的Java开发实例详解: 1. **实例16**:这可能是一个关于数组处理的例子,数组在...

    java设计模式实例

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的经验总结和最佳实践。设计模式并不提供直接的代码实现,而是提供了一种通用的语言,让开发者能够理解和交流复杂的系统架构。本资源“java...

    java实例大全来源于一本教程光盘

    Java是一种广泛使用的面向...实践是学习编程的最佳途径,因此"Java实例大全"为初学者提供了宝贵的实践材料,帮助他们从理论走向实战。在遇到具体问题时,参考这些实例并尝试自己编写代码,是提高编程技能的有效方式。

    Java源程序实例

    2. **类与对象**:Java是面向对象的语言,因此实例中会展示如何定义类、创建对象、封装、继承和多态等核心概念。 3. **异常处理**:学习如何使用try-catch-finally块来捕获和处理运行时错误,这是编写健壮代码的...

    Java经典实例.第三版(高清PDF+配套代码)

    封装是Java中的一个重要特性,它允许我们将数据和方法包装在一个类中,以保护内部数据的安全。继承则是让类之间建立关系,实现代码复用,而多态性使得程序更具灵活性。 在Java中,控制流程是编程的基础,包括条件...

    java基础实例大全

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而著名。"Java基础实例大全"是学习Java编程的一个宝贵资源,它涵盖了从基础到高级的各种实例,旨在帮助初学者深入理解Java语言的核心概念,...

    180个针对Java初学者的简单实例

    创建和使用类,理解构造函数和对象实例化是核心内容。 10. **集合框架**:Java集合框架包括List、Set、Queue等接口和ArrayList、LinkedList、HashSet、HashMap等实现。实例会展示如何添加、删除和遍历元素。 11. *...

    java 编程实例

    4. **字符串处理**:Java中的String类提供了丰富的字符串操作方法,如concat、substring、indexOf、replace等,这些都是实例中常见的内容。 5. **集合框架**:ArrayList、LinkedList、HashSet、HashMap等集合类的...

    Java初学者实例源码

    Java编程语言是面向对象的、跨平台的编程语言,对于初学者来说,通过实例学习是掌握其核心概念和语法的最佳途径。"Java初学者实例源码"是一个集合,旨在帮助初学者逐步理解并实践Java的各种功能和编程技巧。这个...

    java问题解决途径

    通常情况下,你需要在构造函数或setter方法中手动实例化这些依赖。而使用Spring的DI特性后,只需要在配置文件或注解中声明这些依赖关系,Spring容器就会在运行时自动完成对象的创建和依赖注入。 #### 3. JPA简介 -...

    工行java sdk及实例

    在IT行业中,工商银行提供的Java SDK(Software Development Kit)是一种重要的开发工具,主要针对开发者们进行与工商银行接口交互的编程需求。SDK通常包含了类库、文档、示例代码以及必要的工具,帮助开发者快速...

    java100个实例

    Java中,一切皆为对象,你需要了解如何创建类,定义属性和方法,以及如何实例化对象。比如,你可以创建一个名为"Student"的类,包含姓名、年龄等属性,以及显示信息的方法。 数组和集合框架也是重要的部分。数组...

    JAVA程序开发实例

    例如,如何声明和初始化变量,如何定义和调用方法,以及如何创建和实例化类。 2. **控制流程**:这可能包括条件语句(如if-else,switch-case)和循环结构(如for,while,do-while),这些都是编写逻辑密集型代码...

    总结一下java获取路径几种途径

    使用`File`类实例化对象,并调用相应的实例方法,可以得到关于文件的详细路径信息。 ### 3. ClassLoader类获取资源路径 在Java Web应用中,资源文件的位置可能会变化,此时可以通过`ClassLoader`来获取资源的URL或...

    Java反射机制,通过对象访问调用类的私有成员或方法

    获取`Class`对象主要有三种方式:使用`Class.forName()`方法,通过类的`.class`属性,或者直接对类实例使用`getClass()`方法。 例如,如果我们有一个名为`Person`的类,我们可以这样做: ```java Class&lt;?&gt; person...

    java实例7

    在Java实例第七章中,我们将深入探讨Java编程的基础知识,这对于初学者来说是至关重要的一步。这个章节将涵盖多个核心概念,帮助你更好地理解和运用Java语言。以下是一些关键的知识点: 1. **变量和数据类型**:...

    Java更新XML的四种常用方法简介

    Java更新XML文档的方法主要包括四种,本文将探讨这些方法并分析其优缺点。首先,我们要了解JAXP(Java API for XML Processing),这是一个用于XML处理的Java编程接口,支持DOM、SAX和XSLT等标准。JAXP的可插拔层...

Global site tag (gtag.js) - Google Analytics