栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java创建类的几种方式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java创建类的几种方式

1. 通过new关键字创建对象,按需调用我们所需的构造函数
Object a = new Object();
2. 通过class类的newInstance()方法
class EmpObj{
    private String name;

    public EmpObj() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
		 String s = EmpObj.class.toString();
        String s1 = s.split(" ")[1];


        Class aClass = Class.forName(s1);
         EmpObj emp = (EmpObj) aClass.newInstance();
        System.out.println(emp);


或者

		EmpObj empObj = EmpObj.class.newInstance();
        System.out.println(empObj);

3. 使用构造器类的newInstance()方法
 		Constructor constructor = EmpObj.class.getConstructor();
        EmpObj emp = constructor.newInstance();
        System.out.println(emp);

4. 使用clone()的手段

该方法需要在被克隆类中重新clone()方法,并且实现Cloneable接口,否则将会报错(CloneNotSupportedException)

	@Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
	EmpObj empObj = new EmpObj();
        EmpObj newObj = (EmpObj) empObj.clone();
        System.out.println(newObj);

5. 使用反序列化

注意:类应该先实现接口(Serializable )

  // 序列化写入过程
        ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("obj.ser"));
        EmpObj empObj = new EmpObj();
        outputStream.writeObject(empObj);
        outputStream.close();


        // 反序列化读取
        ObjectInputStream in = new ObjectInputStream(new FileInputStream("obj.ser"));
        EmpObj o = (EmpObj) in.readObject();
        System.out.println(o);

完整代码

package JTang.Test2;

import java.io.*;
import java.lang.reflect.Constructor;
import java.util.EnumMap;

public class TestCreatObject {
    public static void main(String[] args) throws Exception {
//        String s = EmpObj.class.toString();
//        String s1 = s.split(" ")[1];
//
//
//        Class aClass = Class.forName(s1);
//         EmpObj emp = (EmpObj) aClass.newInstance();
//        System.out.println(emp);

//        EmpObj empObj = EmpObj.class.newInstance();
//        System.out.println(empObj);

//        Constructor constructor = EmpObj.class.getConstructor();
//        EmpObj emp = constructor.newInstance();
//        System.out.println(emp);

//        EmpObj empObj = new EmpObj();
//        empObj.setName("zs");
//        EmpObj newObj = (EmpObj) empObj.clone();
//        System.out.println(newObj);
        // 序列化写入过程
        ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("obj.ser"));
        EmpObj empObj = new EmpObj();
        outputStream.writeObject(empObj);
        outputStream.close();


        // 反序列化读取
        ObjectInputStream in = new ObjectInputStream(new FileInputStream("obj.ser"));
        EmpObj o = (EmpObj) in.readObject();
        System.out.println(o);

    }
}
    class EmpObj implements Cloneable, Serializable {
    private String name;

    public EmpObj() {
    }


    public String getName() {
        return name;
    }

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

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760827.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号