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
相关推荐
* 在 MyLibraryDesktopApp.java 的可视编辑器中,添加事件处理方法。 * 为上小节新建的“添加”按钮添加事件。 * 在事件处理方法中,添加相应的逻辑代码,使得点击“添加”按钮时,可以执行相应的操作。 5.掌握 ...
在 Java 中,类的实例化方法有四种途径:使用 new 操作符、调用 Class 对象的 newInstance() 方法、调用 clone() 方法,对现有实例的拷贝、通过 ObjectInputStream 的 readObject() 方法反序列化类。 第一种类的...
对于初学者来说,通过实例学习是掌握Java语法和编程概念的重要途径。"220个JAVA初学者实例集合"提供了丰富的实践机会,帮助新手快速上手。 这个资源包中包含了220个精心设计的Java程序实例,旨在覆盖Java的基础到...
Java开发实例是初学者熟悉编程语言的关键途径,它们提供了实际操作的经验,有助于理解Java的核心概念。以下是一些基于给定的文件名的Java开发实例详解: 1. **实例16**:这可能是一个关于数组处理的例子,数组在...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的经验总结和最佳实践。设计模式并不提供直接的代码实现,而是提供了一种通用的语言,让开发者能够理解和交流复杂的系统架构。本资源“java...
Java是一种广泛使用的面向...实践是学习编程的最佳途径,因此"Java实例大全"为初学者提供了宝贵的实践材料,帮助他们从理论走向实战。在遇到具体问题时,参考这些实例并尝试自己编写代码,是提高编程技能的有效方式。
2. **类与对象**:Java是面向对象的语言,因此实例中会展示如何定义类、创建对象、封装、继承和多态等核心概念。 3. **异常处理**:学习如何使用try-catch-finally块来捕获和处理运行时错误,这是编写健壮代码的...
封装是Java中的一个重要特性,它允许我们将数据和方法包装在一个类中,以保护内部数据的安全。继承则是让类之间建立关系,实现代码复用,而多态性使得程序更具灵活性。 在Java中,控制流程是编程的基础,包括条件...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而著名。"Java基础实例大全"是学习Java编程的一个宝贵资源,它涵盖了从基础到高级的各种实例,旨在帮助初学者深入理解Java语言的核心概念,...
创建和使用类,理解构造函数和对象实例化是核心内容。 10. **集合框架**:Java集合框架包括List、Set、Queue等接口和ArrayList、LinkedList、HashSet、HashMap等实现。实例会展示如何添加、删除和遍历元素。 11. *...
4. **字符串处理**:Java中的String类提供了丰富的字符串操作方法,如concat、substring、indexOf、replace等,这些都是实例中常见的内容。 5. **集合框架**:ArrayList、LinkedList、HashSet、HashMap等集合类的...
Java编程语言是面向对象的、跨平台的编程语言,对于初学者来说,通过实例学习是掌握其核心概念和语法的最佳途径。"Java初学者实例源码"是一个集合,旨在帮助初学者逐步理解并实践Java的各种功能和编程技巧。这个...
在IT行业中,工商银行提供的Java SDK(Software Development Kit)是一种重要的开发工具,主要针对开发者们进行与工商银行接口交互的编程需求。SDK通常包含了类库、文档、示例代码以及必要的工具,帮助开发者快速...
通常情况下,你需要在构造函数或setter方法中手动实例化这些依赖。而使用Spring的DI特性后,只需要在配置文件或注解中声明这些依赖关系,Spring容器就会在运行时自动完成对象的创建和依赖注入。 #### 3. JPA简介 -...
Java中,一切皆为对象,你需要了解如何创建类,定义属性和方法,以及如何实例化对象。比如,你可以创建一个名为"Student"的类,包含姓名、年龄等属性,以及显示信息的方法。 数组和集合框架也是重要的部分。数组...
例如,如何声明和初始化变量,如何定义和调用方法,以及如何创建和实例化类。 2. **控制流程**:这可能包括条件语句(如if-else,switch-case)和循环结构(如for,while,do-while),这些都是编写逻辑密集型代码...
使用`File`类实例化对象,并调用相应的实例方法,可以得到关于文件的详细路径信息。 ### 3. ClassLoader类获取资源路径 在Java Web应用中,资源文件的位置可能会变化,此时可以通过`ClassLoader`来获取资源的URL或...
获取`Class`对象主要有三种方式:使用`Class.forName()`方法,通过类的`.class`属性,或者直接对类实例使用`getClass()`方法。 例如,如果我们有一个名为`Person`的类,我们可以这样做: ```java Class<?> person...
在Java实例第七章中,我们将深入探讨Java编程的基础知识,这对于初学者来说是至关重要的一步。这个章节将涵盖多个核心概念,帮助你更好地理解和运用Java语言。以下是一些关键的知识点: 1. **变量和数据类型**:...
Java更新XML文档的方法主要包括四种,本文将探讨这些方法并分析其优缺点。首先,我们要了解JAXP(Java API for XML Processing),这是一个用于XML处理的Java编程接口,支持DOM、SAX和XSLT等标准。JAXP的可插拔层...