JAVA 创建对象4种方法
(1) 用new语句创建对象,这是最常见的创建对象的方法。
(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
(3) 调用对象的clone()方法。
(4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
一.用new语句创建对象
- User user = new User()
二.运用反射手段
(1)调用java.lang.Class.newInstance()
- <span style="font-size: 14px;">Class.forName(classname).newInstance()
- Wife wife = (Wife) Class.forName("com.java.clone.Wife").newInstance();</span>
(2)调用java.lang.reflect.Constructor类的newInstance()
- <span style="font-size: 14px;">Constructor<Wife> constructor = Wife.class.getDeclaredConstructor(int.class,String.class);
- Wife wife = (Wife) constructor.newInstance(1,"nihao");</span>
三.调用对象的clone()方法
详情参考:http://ncs123.iteye.com/blog/1775631
- Wife wife = new Wife(1,"wang");
- Wife wife2 = null;
- wife2 = (Wife) wife.clone();//运用clone()方法产生新对象
四.运用反序列化手段
被序列化的对象必须implements Serializable
- <span style="font-size: 14px;">public class BeanUtil {
- @SuppressWarnings("unchecked")
- public static <T> T cloneTo(T src) throws RuntimeException {
- ByteArrayOutputStream memoryBuffer = new ByteArrayOutputStream();
- ObjectOutputStream out = null;
- ObjectInputStream in = null;
- T dist = null;
- try {
- out = new ObjectOutputStream(memoryBuffer);
- out.writeObject(src);
- out.flush();
- in = new ObjectInputStream(new ByteArrayInputStream(
- memoryBuffer.toByteArray()));
- dist = (T) in.readObject();
- } catch (Exception e) {
- throw new RuntimeException(e);
- } finally {
- if (out != null)
- try {
- out.close();
- out = null;
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- if (in != null)
- try {
- in.close();
- in = null;
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- return dist;
- }
- public static void main(String[] args){
- Husband husband = new Husband(1);
- Wife wife = new Wife(1,"jin");
- husband.setWife(wife);
- Husband husband2 = cloneTo(husband);//运用反序列生成了一个对象
- }
- }</span>
JAVA 创建对象4种方法的更多相关文章
- Java创建对象的六种方法-权当记录一下
1 简介 Java是面向对象的编程语言,只要使用它,就需要创建对象.Java创建对象有六种方法,实际常用的不会这么多,这里权当是记录一下. 2 六种方法 (1)使用new关键字 Pumpkin p1 ...
- Javascript创建对象几种方法解析
Javascript创建对象几种方法解析 Javascript面向对象编程一直是面试中的重点,将自己的理解整理如下,主要参考<Javascript高级程序设计 第三版>,欢迎批评指正. 通 ...
- java基础-四种方法引用
实例 直接三角形,通过两边算第三边,目的是为了如何使用这几种方法引用.代码中多有些不合适,尽情原谅. 静态方法引用 接口的参数列表与类中的具体实现方法的参数列表一样,返回值一致. 调用 //静态引用 ...
- Java用四种方法实现阶乘n! (factorial)
1. 引言 实现阶乘的方法很多,这边介绍四种方法,分别是递归,尾递归,循环和BigDecimal. 2. 代码 public class Test { public static void main( ...
- 两个变量交换的四种方法(Java) 七种方法(JS)
两个变量交换的四种方法(Java) 对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) 1 class TestEV 2 ...
- Java用n种方法编写实现双色球随机摇号案例
方法清单 规则 实现方式一 实现方式二 实现方式三 实现方式四 实现方法五 之前我用JavaScript编写过一个实现双色球随机摇号的案例, 点击此处查看,今天我再用Java语言来实现这一效果. 规则 ...
- JAVA - 多线程 两种方法的比较
一.继承Thread类 实现方法: (1).首先定义一个类去继承Thread父类,重写父类中的run()方法.在run()方法中加入具体的任务代码或处理逻辑.(2).直接创建一个ThreadDemo2 ...
- java 中有几种方法可以实现一个线程? 用什么关键字修 饰同步方法? stop()和 suspend()方法为何不推荐使用?
java5 以前, 有如下两种:第一种:new Thread(){}.start();这表示调用 Thread 子类对象的 run 方法, new Thread(){}表示一个Thread 的匿名子类 ...
- 【Java面试题】23 java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
java5 以前, 有如下两种:第一种:new Thread(){}.start();这表示调用 Thread 子类对象的 run 方法, new Thread(){}表示一个Thread 的匿名子类 ...
随机推荐
- 一个简单程序快速入门JDBC
首先创建jdbc的库,再在这个库里面创建一张users表. drop database if exists jdbc; create database if not exists jdbc; use ...
- Android的自动完成文本框-android学习之旅(二十六)
AutoComplicatedTextView简介 AutoComplicatedTextView是从EditText派生出来的,可以使用EditText的所有的属性.当用户输入一定的内容后,会有提示 ...
- 【一天一道LeetCode】#202. Happy Number
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Write a ...
- Android进阶(二)https请求No peer certificate的解决方法.
在做Android客户端通过https协议访问12306,并爬取数据时,出现了如下错误: 其中有一条错误提示是 javax.net.ssl.SSLPeerUnverifiedException: No ...
- Hadoop-1.0.4伪分布安装与配置
1.采用伪分布模式安装 将hadoop-****.tar.gz复制到linux的/usr/local目录下. 2.解压,重命名 #tar -xzvf hadoop-1.0.4.ta ...
- shell的shift用法
位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shift命令相当于shift 1. 非常 ...
- C语言头文件和库的一些问题
使用gcc的编译器 头文件没有包含stdlib.h,使用atoi函数(atoi函数在stdlib.h中才有声明),编译却没有出错如果编译的时候加上-Wall选项,会有个警告,请问这是为什么? 这是因为 ...
- Chipmunk僵尸物理对象的出现和解决(六)
既然出现了这个问题下面就是如何找到原因. 因为该问题不是每次都出现,偶尔反弹棒碰到五角星时才会多出一个僵尸棒,现象比较随机,较难悉知具体原因. 有时多次触碰又没有出现问题,有时短时间内每次触碰都出现问 ...
- MyBatis - 介绍、简单入门程序
JDBC编程中的问题 1. 将SQL语句硬编码到Java代码,不利于系统维护. 设想如何解决:将SQL单独抽取出来,在配置文件(xml方式.properties文件)进行配置. ...
- Css中的盒子结构padding和margin的区别
之前写过一个padding和marfgin的区别的博客见地址:http://blog.csdn.net/qq_32059827/article/details/50998965.那里只是笼统介绍了一下 ...