• JAVA 创建对象4种方法


    java创建对象的几种方式

    博客分类:
     


    (1) 用new语句创建对象,这是最常见的创建对象的方法。
    (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
    (3) 调用对象的clone()方法。
    (4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

    一.用new语句创建对象

    Java代码  收藏代码
    1. User user = new User()  

     

    二.运用反射手段
    (1)调用java.lang.Class.newInstance()

    Java代码  收藏代码
    1. <span style="font-size: 14px;">Class.forName(classname).newInstance()  
    2. Wife wife = (Wife) Class.forName("com.java.clone.Wife").newInstance();</span>  

     

     (2)调用java.lang.reflect.Constructor类的newInstance()

    Java代码  收藏代码
    1. <span style="font-size: 14px;">Constructor<Wife> constructor = Wife.class.getDeclaredConstructor(int.class,String.class);  
    2. Wife wife = (Wife) constructor.newInstance(1,"nihao");</span>  

     

    三.调用对象的clone()方法
    详情参考:http://ncs123.iteye.com/blog/1775631

    Java代码  收藏代码
    1. Wife wife = new Wife(1,"wang");  
    2. Wife wife2 = null;  
    3. wife2 = (Wife) wife.clone();//运用clone()方法产生新对象  

    四.运用反序列化手段
    被序列化的对象必须implements Serializable

    Java代码  收藏代码
    1. <span style="font-size: 14px;">public class BeanUtil {  
    2.   
    3.     @SuppressWarnings("unchecked")  
    4.     public static <T> T cloneTo(T src) throws RuntimeException {  
    5.         ByteArrayOutputStream memoryBuffer = new ByteArrayOutputStream();  
    6.         ObjectOutputStream out = null;  
    7.         ObjectInputStream in = null;  
    8.         T dist = null;  
    9.   
    10.         try {  
    11.             out = new ObjectOutputStream(memoryBuffer);  
    12.             out.writeObject(src);  
    13.             out.flush();  
    14.             in = new ObjectInputStream(new ByteArrayInputStream(  
    15.                     memoryBuffer.toByteArray()));  
    16.             dist = (T) in.readObject();  
    17.   
    18.         } catch (Exception e) {  
    19.             throw new RuntimeException(e);  
    20.         } finally {  
    21.             if (out != null)  
    22.                 try {  
    23.                     out.close();  
    24.                     out = null;  
    25.                 } catch (IOException e) {  
    26.                     throw new RuntimeException(e);  
    27.                 }  
    28.             if (in != null)  
    29.                 try {  
    30.                     in.close();  
    31.                     in = null;  
    32.                 } catch (IOException e) {  
    33.                     throw new RuntimeException(e);  
    34.                 }  
    35.         }  
    36.   
    37.         return dist;  
    38.     }  
    39.   
    40.     public static void main(String[] args){  
    41.         Husband husband = new Husband(1);  
    42.         Wife wife = new Wife(1,"jin");  
    43.         husband.setWife(wife);  
    44.         Husband husband2 = cloneTo(husband);//运用反序列生成了一个对象  
    45.     }  
    46. }</span>  
  • 相关阅读:
    MKMapVIew学习系列2 在地图上绘制出你运行的轨迹
    WPF SDK研究 Intro(6) WordGame1
    WPF SDK研究 Intro(3) QuickStart3
    WPF SDK研究 Layout(1) Grid
    WPF SDK研究 目录 前言
    WPF SDK研究 Intro(7) WordGame2
    WPF SDK研究 Layout(2) GridComplex
    对vs2005创建的WPF模板分析
    WPF SDK研究 Intro(4) QuickStart4
    《Programming WPF》翻译 第6章 资源
  • 原文地址:https://www.cnblogs.com/isoftware/p/3757180.html
Copyright © 2020-2023  润新知