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. Hadoop 安装(1) CENTOS 安装与配置

    配置虚拟机,名字 Hadoop_Slave4,内存为1024MB,15GB. 进入安装centos. 配置Hostname: Slave4.Hadoop 配置网络,设置静态IP:192.168.1.2 ...

  2. sql server数据库主键自增一插入特定值

    ID identity(1,1) SET IDENTITY_INSERT TableName ON INSERT TableName(ID) VALUES(110) SET IDENTITY_INSE ...

  3. Foundation--NSArray+NSMutableArray

    C语言中数组只能存放一种类型 OC语言中数组可以存放多种类型,但是只能是对象类型,不可以是基本类型 我们实际中最好在一个数组中只存放一种类型的元素 nil表示数组的结尾,所以我们不能填写值为nil的对 ...

  4. Core Bluetooth下实现两个设备进行互联

    一.外设管理者 - 发布广告 如果两部手机在BLE的基础上进行连接,需要让其中一部手机作为外设,外设需要进行广播自己需要发布的数据,以供中心设备的接收和处理. 实现外设广播数据并且处理发送过程当中的流 ...

  5. Struts2 校验

    Struts2校验格式: actionName-methodName-invalidation.xml  该配置文件必须和action类在同一个包下. <?xml version="1 ...

  6. JVM内存模型及垃圾收集策略解析

    一 JVM内存模型 1.1 Java栈 Java栈是与每一个线程关联的,JVM在创建每一个线程的时候,会分配一定的栈空间给线程.它主要用来存储线程执行过程中的局部变量,方法的返回值,以及方法调用上下文 ...

  7. 【原创】QT5-卸载精灵v1.0-卸载windows软件-简易版

    由于项目需求,需要实现卸载windows上的普通软件的小功能,实现起来还是比较简单的. 先发个图: 思路: 1.根据注册表的信息去打开应用程序,卸载也一样: 2.读桌面的快捷方式,根据快捷方式的指向路 ...

  8. python操作redis-set

    #!/usr/bin/python #!coding: utf-8 import redis if __name__=="__main__": try: conn=redis.St ...

  9. 厂商自定义USB设备固件程序及特性

    通过前面的学习,大家应该对USB固件程序结构有了比较深的认识,现在再来详细说说固件里决定设备识别成厂商自定义USB设备的地方有哪些,或者说厂商自定义USB设备的固件特性有哪些. 之前不止一次说过学习U ...

  10. 设置edittext的hint位置

    <EditText android:id="@+id/edt_content" android:layout_width="fill_parent" an ...