java创建对象的几种常用方法
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创建对象的几种常用方法的更多相关文章
- Java创建对象的4种方式?
[Java创建对象的4种方式?] 1)通过new语句实例化一个对象 2)通过反射机制创建对象 3)通过clone()方法创建一个对象 (复制) 4)通过反序列化方式创建对象
- Java创建对象的几种方式
解析:Java创建对象的几种方式(重要):(1) 用new语句创建对象,这是最常见的创建对象的方法.(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Co ...
- &和&&的共同点和区别、Java字符含义和Java创建对象的几种方式
一.&和&&的共同点和区别 1.&和&&的联系(共同点): &和&&都可以用作逻辑与运算符,但是要看使用时的具体条件来决定. 操 ...
- Java创建对象的几种方式。
Java创建对象的几种方式(重要): (1) 用new语句创建对象,这是最常见的创建对象的方法. (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Con ...
- 面试阿里,字节跳动,华为必须知道的Java创建对象的5种方式
Java创建对象的5种方式 1.直接new,调用了构造器2.通过clone(),没有调用构造器3.通过反射,调用了构造器4.通过反序列化,没有调用构造器5.通过Unsafe类的allocateInst ...
- Java创建对象的几种方法
有时候,也可能碰到这样面试题,如: Java创建对象有哪几种方法? 除了new之外,java创建对象还有哪几种方式? 本文结合例子,给出几种Java创建对象的方法,Here we go~~~~ 使用n ...
- Java创建对象的4种方式
Java创建对象的方式共有四种: 使用new语句实例化一个对象: 通过反射机制创建对象: 通过clone()方法创建一个对象: 通过反序列化的方式创建对象. 一.使用new语句实例化一个对象 new语 ...
- Java基础知识强化25:Java创建对象的四种方式
1. Java程序中对象的创建有四种方式: ● 调用new语句创建对象,最常见的一种 ● 运用反射手段创建对象,调用java.lang.Class 或者 java.lang.reflect.Const ...
- 【Java基础】Java创建对象的五种方式
Java中创建(实例化)对象的五种方式 1.用new语句直接创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3. ...
随机推荐
- 我的美国(北美)计算机CS实习面试经验分享
过去的一年多里,参加了一些面试,虽然面过的公司不多,但都从头一直走到尾.毕竟自己也是花了大量的时间和精力在这一场场的面试里.所以,就絮叨下自己的一些经验,希望能给在美国找实习找工作的同学们提供一点点帮 ...
- 如何让你的SQL运行得更快
人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS ...
- css3投影讲解、投影
迷茫了好一段时间,今天开始整理一下自己,同时也整理下新的知识. CSS3: 从头开始做起:现在在页面中用到最多的是图片/容器投影,文字投影: 接下来就总结一个投影问题: box-shadow:阴影类型 ...
- python核心编程-第四章-习题
1.身份.类型.值.其中,身份是每个对象的标识,与内存地址密切相关,可用id()返回:类型决定了对象可以保存什么类型的值,用type()函数.isinstance()函数可以得到对象的类型:值就是对象 ...
- C语言基础11
函数指针的定义: 函数类型 (标识符 指针变量名)(形参列表) void printHello( ); void printHello( ){ printf("hello world!!! ...
- Oracle EBS-SQL (PO-14):检查供应商信息sql
select pvs.org_id, pvs.vendor_id, pvs.vendor_site_id, hou.name 经营组织, ...
- Apriori algorithm
本文是个人对spmf中example1. mining frequent itemsets by using the apriori algorithm的学习. What is Apriori? A ...
- JAVA笔记1-00
package chapter1; public class Demo1 { public static void main(String[] args) { System.out.println(& ...
- Go语言(golang)开源项目大全
转http://www.open-open.com/lib/view/open1396063913278.html内容目录Astronomy构建工具缓存云计算命令行选项解析器命令行工具压缩配置文件解析 ...
- Tar打包、压缩与解压缩到指定目录的方法
tar在linux上是常用的打包.压缩.加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数 参数: -c :create 建立压缩档案的参数: -x : 解压缩压缩档案的参数: -z : 是 ...