`
gaojingsong
  • 浏览: 1210757 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【JAVA产生对象的几种方式】

阅读更多

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

/**
 * java生成对象的几种方式
 *   1、new
 *   2、反射
 *      Class.forName
 *      类.class
 *      对象.getClass()
 *   3、clone
 *      必须实现Cloneable接口,实现protected Object clone()方法
 *   4、序列化

       1.概念

       序列化:把Java对象转换为字节序列的过程。
      反序列化:把字节序列恢复为Java对象的过程。

        2.用途

    对象的序列化主要有两种用途:
    1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
    2) 在网络上传送对象的字节序列。

 * @author Administrator

 */
public class Demo1 {

 /**
  * @param args
  * @throws Exception
  */
 public static void main(String[] args) throws Exception {
     //一、使用new 

     Student s = new Student();
      s.print();
  
   //二、使用反射 
  Class c = Class.forName("Student");
  Student c1=(Student)c.newInstance();
  c1.print();
  
  System.out.println("1、通过类本身获得对象");
   Class clazz = Student.class;
   Student s11=(Student)clazz.newInstance();
   s11.print();
  
   Student student1 = new Student();
   clazz = student1.getClass();
   Student s12=(Student)clazz.newInstance();
   s12.print();

 

 //三、使用clone

  /**
   * implements Cloneable
   * protected Object clone()
   */
  Student s1 = (Student) s.clone();
  s1.print();
//  Exception in thread "main" java.lang.CloneNotSupportedException:
  
  
   //四、使用Serializable 
  System.out.println(" 序列化对象 ");
   //序列化对象
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:\\objectFile.obj"));
        Student student = new Student();   
        out.writeObject(student);    //写入student对象
        out.close();
       
        System.out.println(" 反序列化对象 ");
        //反序列化对象
        ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:\\objectFile.obj"));
        Student obj3 = (Student) in.readObject();
        obj3.print();
        in.close();
 }

}

 

 

-----------------------------------

 

import java.io.Serializable;


public class Student implements Serializable{
 private String id;
 
 private String name;
 
 private int age;

 public Student(){
  System.out.println(" Student Constructor");
 }
 
 public void print() {
  System.out.println(" Student print method called!!!!");
 }
 
 @Override
 protected Object clone() throws CloneNotSupportedException {
  // TODO Auto-generated method stub
  return super.clone();
 }
 public Student(String id, String name, int age) {
  super();
  this.id = id;
  this.name = name;
  this.age = age;
  System.out.println(" Student(id,name,age) Constructor");
 }

 public String getId() {
  return id;
 }

 public void setId(String id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }
 
 
 
 
 
}

  • 大小: 29.8 KB
1
6
分享到:
评论

相关推荐

    探讨Java的对象是怎么在内存中产生的?

    Java对象是由类实例化的结果,当我们使用`new`关键字创建一个对象时,实际上经历了以下几个步骤: 1. **类加载检查**:虚拟机首先检查`new`指令的参数是否能在常量池中定位到一个类的符号引用。如果该类尚未被加载...

    java面向对象练习题-经典

    编译Java Application源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为.class。 Java源程序文件以.java为扩展名,而编译后的字节码文件则以.class为扩展名,这是Java语言的基本特征之一。 2. 设x = 1,y...

    JAVA面向对象基础

    通过以上解析,我们可以看到面向对象编程不仅是一种技术手段,更是一种思维方式,它鼓励开发者从现实世界的视角出发,构建更为灵活、可扩展和可维护的软件系统。掌握面向对象的基础概念,对于任何想要深入学习和应用...

    java面向对象案例源码及PPT

    Java面向对象编程是一种强大的软件开发方法,它基于“对象”的概念,强调数据和操作数据的方法紧密结合。这个资源包“java面向对象案例源码及PPT”显然是为了帮助初级Java学习者深入理解面向对象编程的基本原理和...

    8.java学习第八章——面向对象.pdf

    Java是一种典型的面向对象编程语言。 #### 面向过程的优缺点 **优点**: - 快速开发:对于小型项目或简单的功能实现,采用面向过程的方式可以快速完成开发工作,因为无需复杂的对象建模。 - 简单易懂:由于逻辑...

    Java实现几种序列化方式总结

    以下是几种常见的Java序列化方式的详细解释: 1. **Java原生序列化** Java原生序列化是最基础的序列化方式,适用于Java标准库中的对象。要进行序列化,对象所属的类必须实现`Serializable`接口。这个过程通常涉及...

    java 面向对象程序设计课件

    在"java 面向对象程序设计课件"中,我们可以深入探讨以下几个关键知识点: 1. **面向对象编程基础**:Java是面向对象的语言,其核心概念包括封装、继承和多态。封装允许我们将数据和操作数据的方法捆绑在一起,形成...

    java面向对象基础

    内部类是指在一个类的内部定义的类,它可以分为成员内部类、静态内部类和方法内部类等几种类型。 - **成员内部类**: 定义在一个类内部的类,可以访问外部类的成员。 - **静态内部类**: 通过`static`关键字定义的...

    JAVA面向对象基础测试题-继承-封装-多态等测试题.docx

    根据给定文件的信息,我们可以总结出以下几个面向对象的基础知识点,并结合具体的题目来进行解析: ### 面向对象基础知识概述 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它将数据和处理...

    ACCP 5.0 S2_使用JAVA实现面向对象编程

    它是实现多态的一种方式,一个类可以实现多个接口,使用`implements`关键字。 8. 内部类:Java允许在类内部定义类,这被称为内部类。内部类可以访问外部类的所有成员,包括私有成员,提供了更高级别的封装。 9. ...

    张孝祥java面向对象PPT

    它是实现多继承的另一种方式,定义了一组必须被实现的方法,增强了代码的规范性和可扩展性。 8. **异常处理**:Java提供了异常处理机制,通过try-catch-finally语句块捕获和处理运行时错误,以确保程序的稳定性和...

    java面向对象精华代码

    Java是一种广泛使用的面向对象编程语言,其面向对象特性是其核心设计原则之一。"java面向对象精华代码"可能包含了一些示例代码,用于演示和解释Java面向对象编程的关键概念。面向对象编程(Object-Oriented ...

    《JAVA面向对象程序设计》练习题---参考答案.doc

    "JAVA面向对象程序设计练习题参考答案" 以下是根据给定的文件信息生成的相关知识点: 一、单项选择题 1. 编译 Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为 `.class`。 知识点...

    java 创建线程的几种方式

    总结来说,虽然两种方式都能创建线程,但实现Runnable接口通常更受欢迎,因为它更灵活,且可以避免由于单继承带来的问题。在实际开发中,根据项目需求和代码设计选择合适的方法。同时,理解线程的并发执行机制,正确...

    Java产生验证码实例

    在Java开发中,验证码是一种常见的安全机制,用于防止自动化脚本或者机器人进行恶意操作,比如注册、登录等。本文将详细讲解如何在J2EE环境中生成验证码,并涉及到使用Session来存储和验证验证码。 首先,验证码的...

    Java中常见异常类型及分析.pdf

    本文将详细介绍几种Java中常见的异常类型及其产生原因,并提供相应的解决方案。 #### 二、异常类型详解 ##### 1. NullPointerException (空指针异常) **定义:** `NullPointerException`是最常见的运行时异常之一...

    Java面向对象编程思想

    - **方法重写**:实现多态的一种方式,通过子类重写父类的方法来实现。 - **接口**:另一种实现多态的方式,一个类可以通过实现多个接口来表现出多种行为。 **示例代码**: ```java interface Speakable { void ...

    JAVA面试题String产生了几个对象

    在Java中,String对象可以通过两种方式创建,一种是通过字面量方式创建,如String s1="Hello";,另一种是通过new关键字创建,如String s3=new String("Hello");。在字面量方式创建时,JVM会检查字符串常量池中是否有...

    java基础教程_第2部分面向对象程序设计

    一个类可以包含以下几种类型的成员: 1. **成员变量**:用于存储对象的状态。例如,一个人类对象可能有姓名、年龄等成员变量。 2. **构造方法**:构造方法用于初始化对象的状态。构造方法的名称必须与类名相同,...

    JAVA面向对象编程(孙卫琴)02.pdf

    根据提供的文件信息,我们将深入探讨Java面向对象编程的知识点,同时引用孙卫琴老师在她的书籍中可能包含的内容,并结合面向对象编程的核心概念进行解释。 标题《JAVA面向对象编程(孙卫琴)02.pdf》表明这是一本专注...

Global site tag (gtag.js) - Google Analytics