java几种常见的创建对象的方法:

1、使用new关键字创建对象

2、利用java的反射机制,通过java.lang.Class或者java.lang.reflect.Constructor创建对象

3、实现Cloneable接口,然后重写Object.clone()方法创建对象

4、实现序列化serialiable接口,通过反序列化,ObjectInputStream的readObject()方法创建对象

5、String str="abc" 直接由jvm创建 或者使用 字符串操作符"+"  String str1 = "a"+"bc"由jvm创建

创建对象类TestBean.java

package test.createObj;

import java.io.Serializable;

public class TestBean implements Cloneable,Serializable{
/**
*
*/
private static final long serialVersionUID = -6896355094290356656L;
private String id;
private String name; public TestBean(String id, String name) {
this.id = id;
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
} @Override
public String toString() {
return super.toString()+" "+id+" "+name;
}
}

创建测试类CreateObjTest.java

package test.createObj;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Constructor; public class CreateObjTest { /**
* @param args
*/
@SuppressWarnings("rawtypes")
public static void main(String[] args) {
//一、new关键词新建一个对象
TestBean testbean1 = new TestBean("1","张三哈哈"); //二、反射机制
TestBean testbean2 = null;
try {
Class<?> clazz = Class.forName("test.createObj.TestBean");
//当类中含有参数的构造函数 而没有无参构造函数时 会报java.lang.InstantiationException异常
//则类里需要添加无参构造函数
// testbean2 = (TestBean) clazz.newInstance(); //或者用反射获取类的有参构造函数 通过有参构造函数实例化对象
Class[] paramTypes = {String.class,String.class};
Constructor constor = clazz.getConstructor(paramTypes);
testbean2 = (TestBean) constor.newInstance("2","李四");
} catch (Exception e) {
e.printStackTrace();
} //三、克隆 但类必须要实现Cloneable接口 并且要在类里重写clone方法
//jdl1.6中文api是这样说的:
//如果在没有实现 Cloneable 接口的实例上调用 Object 的 clone 方法,则会导致抛出 CloneNotSupportedException 异常。
//按照惯例,实现此接口的类应该使用公共方法重写 Object.clone(它是受保护的)。
//请参阅 Object.clone(),以获得有关重写此方法的详细信息。
//注意,此接口不 包含 clone 方法。因此,因为某个对象实现了此接口就克隆它是不可能的。即使 clone 方法是反射性调用的,也无法保证它将获得成功。
TestBean testbean3 = null;
try {
testbean3 = (TestBean) testbean1.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
} //四、反序列化 但类要实现序列化接口
ObjectOutputStream objOutStream = null;
ObjectInputStream objInStream = null;
TestBean testbean4 = null;
try {
File file = new File("C:\\testbean.txt");
if(!file.exists()){
file.createNewFile();
}
// objOutStream = new ObjectOutputStream(new FileOutputStream(file));
// objOutStream.writeObject(testbean1);
objInStream = new ObjectInputStream(new FileInputStream(file));
testbean4 = (TestBean) objInStream.readObject();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(objOutStream!=null){
try {
objOutStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(objInStream!=null){
try {
objInStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} System.out.println("testbean1:"+testbean1);
System.out.println("testbean2:"+testbean2);
System.out.println("testbean3:"+testbean3);
System.out.println("testbean4:"+testbean4);
} }

运行结果:

java创建对象的几种常用方法的更多相关文章

  1. Java创建对象的4种方式?

     [Java创建对象的4种方式?] 1)通过new语句实例化一个对象 2)通过反射机制创建对象 3)通过clone()方法创建一个对象  (复制) 4)通过反序列化方式创建对象

  2. Java创建对象的几种方式

    解析:Java创建对象的几种方式(重要):(1) 用new语句创建对象,这是最常见的创建对象的方法.(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Co ...

  3. &和&&的共同点和区别、Java字符含义和Java创建对象的几种方式

    一.&和&&的共同点和区别 1.&和&&的联系(共同点): &和&&都可以用作逻辑与运算符,但是要看使用时的具体条件来决定. 操 ...

  4. Java创建对象的几种方式。

    Java创建对象的几种方式(重要): (1) 用new语句创建对象,这是最常见的创建对象的方法. (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Con ...

  5. 面试阿里,字节跳动,华为必须知道的Java创建对象的5种方式

    Java创建对象的5种方式 1.直接new,调用了构造器2.通过clone(),没有调用构造器3.通过反射,调用了构造器4.通过反序列化,没有调用构造器5.通过Unsafe类的allocateInst ...

  6. Java创建对象的几种方法

    有时候,也可能碰到这样面试题,如: Java创建对象有哪几种方法? 除了new之外,java创建对象还有哪几种方式? 本文结合例子,给出几种Java创建对象的方法,Here we go~~~~ 使用n ...

  7. Java创建对象的4种方式

    Java创建对象的方式共有四种: 使用new语句实例化一个对象: 通过反射机制创建对象: 通过clone()方法创建一个对象: 通过反序列化的方式创建对象. 一.使用new语句实例化一个对象 new语 ...

  8. Java基础知识强化25:Java创建对象的四种方式

    1. Java程序中对象的创建有四种方式: ● 调用new语句创建对象,最常见的一种 ● 运用反射手段创建对象,调用java.lang.Class 或者 java.lang.reflect.Const ...

  9. 【Java基础】Java创建对象的五种方式

    Java中创建(实例化)对象的五种方式 1.用new语句直接创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3. ...

随机推荐

  1. 什么时候会刷新备库控制文件refresh the standby database control file?

    通过合理的设置,对于Primary的绝大数操作,都是可以传递到Physical Standby,datafile的操作是通过STANDBY_FILE_MANAGEMENT参数来控制的,但是即使STAN ...

  2. win7系统64位安装oracle10g

    win7系统64位安装oracle10g 下载地址: http://download.oracle.com/otn/nt/oracle10g/10204/10204_vista_w2k8_x64_pr ...

  3. C#面试题总结——程序设计基础

    一.类型与变量 1.C#支持哪几个预定义的值类型? 主要包括五个类型:整数,浮点数,字符型,bool类型以及decimal型(小数型).其中每一个类型分别有多个内置类型组成. 2.C#支持哪几个预定义 ...

  4. VSFTP服务

    互联网最开始的三大服务:HTTP.mail.FTP 一.文件服务器简介     FTP:在内网和公网使用.服务器:windows,Linux    客户端:windows,Linux     samb ...

  5. Vue.js 学习示例

    本篇和大家分享的是学习Vuejs的总结和调用webapi的一个小示例:快到年底了争取和大家多分享点东西,希望能对各位有所帮助:本章内容希望大家喜欢,也希望各位多多扫码支持和推荐谢谢: » Vuejs ...

  6. Windows -DOS 下Yii创建应用及出错处理

    Win7下,以管理员身份运行cmd.exe 本例是在wamp环境下:切换到d盘,再切换到framework目录.............1--C:\windows\system32>d: 2-- ...

  7. Dragon Balls--hdu3635(并查集)

    Dragon Balls Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  8. MVC4商城项目一:框架设计

    代码已托管在  https://code.csdn.net/denghao156/ktnmb_mvc4 先上图,设计模式参考:ddmvc4.codeplex.com 一.unintofwork  设计 ...

  9. MYSQL create database 和 create table 做了一些什么!

    create database Studio; 这样就可以创建一个数据库了.他包涵一些什么呢? 可以看到它创建了一个文件夹,下面我们进去看一下它里面有一些什么东西. 还是先建一张表再进去吧,运行一下这 ...

  10. C++ new和delete实现原理——new和delete最终调用malloc和free

    new和delete最终调用malloc和free,关于malloc和free实现原理参见这篇文章: http://blog.csdn.net/passion_wu128/article/detail ...