java创建对象的方法

package com.company;

public class B implements Cloneable {
    public void hello(){
        System.out.println("hello from B");
    }
    protected Object clone() throws  CloneNotSupportedException
    {
        return super.clone();
    }
    public static void main (String [] args) throws CloneNotSupportedException {
        B obj2=new B();
        obj2.hello();
        B obj3=(B) obj2.clone();
    }
}

以上是第二种方法通过实现Cloneable接口创建

//全部例子

  //第一种 直接new 调用构造函数
        A obj1 = new A();
        obj1.hello();


        //第二种 clone
        //obj3 是obj2的克隆对象  没有调用构造函数
        B obj2 = new B();
        obj2.hello();

        B obj3 = (B) obj2.clone();
        obj3.hello();

        //第三种 序列化  没有调用构造函数
        //序列化会引发安全漏洞,未来将被移除出JDK,请谨慎使用!!!
        C obj4  = new C();
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("data.obj"));
        out.writeObject(obj4);
        out.close();

        ObjectInputStream in = new ObjectInputStream(new FileInputStream("data.obj"));
        C obj5 = (C) in.readObject();
        in.close();
        obj5.hello();


        //第四种  newInstance  调用构造函数
        Object obj6 = Class.forName("com.company.A").newInstance();
        Method m = Class.forName("com.company.A").getMethod("hello");
        m.invoke(obj6);

        A obj7 = (A) Class.forName("com.company.A").newInstance();

        //第五种  newInstance  调用构造函数
        Constructor<A> constructor = A.class.getConstructor();
        A obj8 = constructor.newInstance();
        obj8.hello();

    }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值