worker java_Java 创建对象的四种方法

原标题:Java 创建对象的四种方法

使用new 方式创建对象

publicstaticWorker createWorker{

returnnewWorker;

}

publicstaticWorker createWorker(String name, intage){

returnnewWorker(name, age);

}

使用反射机制

/*

* 使用反射机制,不带参数 Class 对象的 newInstance 方法

*/

publicstatic Worker createWorker1 {

Class clazz = null;

Worker worker = null;

try{

clazz = Class.forName( "com.lou.creation.Worker");

worker = (Worker) clazz.newInstance;

} catch(ClassNotFoundException e) {

e.printStackTrace;

} catch(InstantiationException e) {

e.printStackTrace;

} catch(IllegalAccessException e) {

e.printStackTrace;

}

returnworker;

}

/*

* 使用反射机制 , Constructor的 newInstance方法

*/

publicstatic Worker createWorker2 {

Worker worker = null;

try{

Class clazz = null;

clazz = Class.forName( "com.lou.creation.Worker");

// 获取不带参数的构造器

Constructor constructor= clazz.getConstructor;

// 使用构造器创建对象

worker = (Worker) constructor.newInstance;

} catch(ClassNotFoundException e) {

e.printStackTrace;

} catch(InstantiationException e) {

e.printStackTrace;

} catch(IllegalAccessException e) {

e.printStackTrace;

} catch(SecurityException e) {

e.printStackTrace;

} catch(NoSuchMethodException e) {

e.printStackTrace;

} catch(IllegalArgumentException e) {

e.printStackTrace;

} catch(InvocationTargetException e) {

e.printStackTrace;

}

returnworker;

}

/*

* 使用反射机制 : 带参数的构造函数创建新对象

*/

publicstatic Worker createWorker3(String name, Integer age) {

Worker worker = null;

try{

Class clazz = null;

clazz = Class.forName( "com.lou.creation.Worker");

// 获取不带参数的构造器

Constructor constructor= clazz.getConstructor(name.getClass,

age.getClass);

// 使用构造器创建对象

worker = (Worker) constructor.newInstance(name, age);

} catch(ClassNotFoundException e) {

e.printStackTrace;

} catch(InstantiationException e) {

e.printStackTrace;

} catch(IllegalAccessException e) {

e.printStackTrace;

} catch(SecurityException e) {

e.printStackTrace;

} catch(NoSuchMethodException e) {

e.printStackTrace;

} catch(IllegalArgumentException e) {

e.printStackTrace;

} catch(InvocationTargetException e) {

e.printStackTrace;

}

returnworker;

}

序列化和反序列化创建对象

/*

* 使用序列化和反序列化创建对象,这种方式其实是根据既有的对象进行复制,这个需要事先将可序列化的对象线存到文件里

*/

@SuppressWarnings( "resource")

publicstaticWorker createWorker4(String objectPath){

ObjectInput input = null;

Worker worker = null;

try{

input = newObjectInputStream( newFileInputStream(objectPath));

worker = (Worker) input.readObject;

} catch(FileNotFoundException e) {

e.printStackTrace;

} catch(IOException e) {

e.printStackTrace;

} catch(ClassNotFoundException e) {

e.printStackTrace;

}

returnworker;

}

/*

* 将创建的对象存入到文件内

*/

publicstaticvoidstoreObject2File(String objectPath){

Worker worker = newWorker;

ObjectOutputStream objectOutputStream;

try{

objectOutputStream = newObjectOutputStream( newFileOutputStream(

objectPath));

objectOutputStream.writeObject(worker);

} catch(FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace;

} catch(IOException e) {

// TODO Auto-generated catch block

e.printStackTrace;

}

}

深拷贝

/*

* 使用对象的 深拷贝进行复制,创建对象

*/

publicstaticWorker createWorker5(Worker worker){

return(Worker) worker.clone;

}

worker

importjava.io.Serializable;

publicclassWorkerimplementsCloneable, Serializable{

privatestaticfinallongserialVersionUID = 1L;

privateString name;

privateintage;

publicWorker

{

this.name = "";

this.age = 0;

}

publicWorker(String name, intage)

{

this.name = name;

this.age = age;

}

publicvoidwork

{

System.out.println(name + "is working");

}

publicWorker clone

{

Worker worker = null;

try{

return(Worker) super.clone;

} catch(CloneNotSupportedException e) {

// TODO Auto-generated catch block

e.printStackTrace;

}

returnworker;

}

}

参考

pdai

http://1t.click/b4eD返回搜狐,查看更多

责任编辑:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值