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. MySql高效分页SQL

    public string GetQuerySql(ITSPAreaQueryModel model, object state = null) { ); sqlBuilder.AppendForma ...

  2. 异常 java.lang.NumberFormatException: For input string:

    今天在写项目时,将String类型转换为Integer类型爆出此异常,记录如下: 代码如下: 1 String a = "2222222222"; //10个2 Integer b ...

  3. win7笔记本电脑实现wifi共享

    前提条件:win 7系统,有wifi 同dos命令就可实现wifi共享 第一步: netsh wlan start hostednetwork pause 第二步: netsh wlan set ho ...

  4. Java多线程编程总结(精华)

    Java多线程编程总结 2007-05-17 11:21:59 标签:多线程 java 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http ...

  5. PHP学习笔记13淘宝接口开发一例(tmall.items.discount.search),PHP

    程序设计,因为接口是有请求次数限制的,正式接口也只有2W次每天的请求次数,所以我们需要把从接口返回的数据缓存起来. 采用的接口是http://api.taobao.com/apidoc/api.htm ...

  6. mvc学习总结-使用Ninject和CodeFirst

    1.Ninject用来解耦程序:即对接口编程,而不是对实现类编程:理解:BLL对IDAL编程,对应的是调用多种数据实现的DAL,DAL可以是SqlServer的,可以是Oracle,或其他数据媒介: ...

  7. MVC4 Controller器同名问题

    一.创建项目 二.修改配置文件(路由器) 详情如下: 总结:解决Controller器同名问题,只需要修改2外,App_Start里的RouteConfig.cs文件和Area下的***AreaReg ...

  8. API接口测试01理论

    定义 接口测试是系统组件间及多个系统之间的测试 如:app与Server间如何进行数据交换,传递 意义 确保主要流程及系统的稳定性 将BUG控制在项目前期 缩短产品的研发周期 检查服务器的异常处理能力 ...

  9. 新版703n刷openwrt

    自带的官方固件: 3.17.1 Build 140120 Rel.56593n WR703N v1 00000000 在不能web页面刷固件,因为带了校验功能. 老外给出了不上TTL刷路由的方法: h ...

  10. android事件详解

    http://blog.csdn.net/asce1885/article/details/7596669 http://blog.csdn.net/liranke/article/details/6 ...