• 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>  
  • 相关阅读:
    几种委托的解释
    Python中的编码风格
    Python的循环
    Python中操作文件
    Python的random模块、string模块、time模块、os模块
    Python中的函数
    Python的数据类型
    使用iview Form 的resetFields()在f12下报错
    滚动条的滚动距离
    编程学习之资源
  • 原文地址:https://www.cnblogs.com/isoftware/p/3757180.html
Copyright © 2020-2023  润新知