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. ...
随机推荐
- <转>Python的内存泄漏及gc模块的使用分析
一般来说在 Python 中,为了解决内存泄漏问题,采用了对象引用计数,并基于引用计数实现自动垃圾回收.由于Python 有了自动垃圾回收功能,就造成了不少初学者误认为自己从此过上了好日子,不必再受内 ...
- VB.NET 结构(Structure)和类(Class)的区别
类是我们用来构造 VB.NET 应用程序时的最基本的编程结构了. 那结构与类有什么相似之处与不同之处呢? 结构和类, 相同之处是都含有成员,包括构造函数.方法.属性.字段.常量.枚举和事件,都可以实现 ...
- [?]Unity快捷键
Super=Win键. Rererence: What are Unity's keyboard and mouse shortcuts?
- JAVA异常使用_每个人都曾用过、但未必都用得好
一.抛出异常 vs. 返回错误代码 有人说“Well, an exception is a goto.”,但也有人言“makes the code simpler by visibly separat ...
- <Web Scraping with Python>:Chapter 1 & 2
<Web Scraping with Python> Chapter 1 & 2: Your First Web Scraper & Advanced HTML Parsi ...
- SQL Server 引起磁盘IO的原因
1. 要访问的数据不在内存中.这会引起IO 2. update/delete/insert 会把变化写入数据文件.还要记录日志 : 3. checkpoint 4. lazy writer 5. db ...
- 使用Java管理Azure(1):基础配置
Azure针对Java开发人员提供了非常丰富的开发库,开发工具,和相关插件,让你通过Java对Azure进行服务管理和开发,本文第一步先介绍如何快速的配置Java开发工具,主要针对目前比较流行的Ecl ...
- 如何设置 Internal 类,方法,属性对其他项目可见
internal 修饰符时程序集内部其他类可见.但对程序集外的类不可见,这样就很好的封装了可见性. 但是,我们也许会碰到类似的情况,特别是基于已有代码开发新的代码时,你会发现很多 internal 的 ...
- haproxy redirect prefix
acl short_domain hdr(Host) -i etiantian.org redirect prefix http://www.etiantian.org code 301 if sho ...
- Photoshop技能167个经典的Photoshop技巧大全
Photoshop技能167个经典的Photoshop技巧大全 学PS基础:Photoshop 技能167个 经典的Photoshop技巧大全,如果你是初级阶段的水平,熟读此文并掌握,马上进阶为中级 ...