- 浏览: 1133231 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (411)
- Java Foundation (41)
- AI/机器学习/数据挖掘/模式识别/自然语言处理/信息检索 (2)
- 云计算/NoSQL/数据分析 (11)
- Linux (13)
- Open Source (12)
- J2EE (52)
- Data Structures (4)
- other (10)
- Dev Error (41)
- Ajax/JS/JSP/HTML5 (47)
- Oracle (68)
- FLEX (19)
- Tools (19)
- 设计模式 (4)
- Database (12)
- SQL Server (9)
- 例子程序 (4)
- mysql (2)
- Web Services (4)
- 面试 (8)
- 嵌入式/移动开发 (18)
- 软件工程/UML (15)
- C/C++ (7)
- 架构Architecture/分布式Distributed (1)
最新评论
-
a535114641:
LZ你好, 用了这个方法后子页面里的JS方法就全不能用了呀
页面局部刷新的两种方式:form+iframe 和 ajax -
di1984HIT:
学习了,真不错,做个记号啊
Machine Learning -
赵师傅临死前:
我一台老机器,myeclipse9 + FB3.5 可以正常使 ...
myeclipse 10 安装 flash builder 4.6 -
Wu_Jiang:
触发时间在将来的某个时间 但是第一次触发的时间超出了失效时间, ...
Based on configured schedule, the given trigger will never fire. -
cylove007:
找了好久,顶你
Editable Select 可编辑select
Marker interfaces:
又叫Tagging Interfaces。标识接口是没有任何方法和属性的接口。标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。常见的有Serializable Cloneable Remote EventListener
你当然可以任意定义没有任何方法和属性的接口,但肯定不应该称为标识接口,因为JDK里的“标识接口”不光是“只有个名字”这么简单,更重要的是,实现这些标志接口的类,确实多了功能,尽管你看不到这些功能是怎么实现的。比如,Serializable,实现了这个接口,那这个序列化的工作,到底是谁做的那?Cloneable,实现了这个接口,并在重写的clone()方法里只是调用了一下super.clone(),就产生了一个全新的对象,要知道Object里的clone()方法是没有任何实现的,这个克隆的工作,到底是谁完成的那?JVM or Reflection,但是你看不到它们。
关于标志接口的对于错,争论是有的:
标志接口是对接口的误用,应该被避免,使用标志接口的类,都是一些相当古老的类。Java 5 加入 注解 特性后,标志接口更不会再有出现的必要。
http://www.coderanch.com/how-to/java/Java-FAQ#marker
http://www.artima.com/intv/issuesP.html
也有持不同意见的,详见 Effective Java Item 37.
常用的标识接口:
Serializable:
1 类变量和标记为transient的变量不会被序列化;
2 序列化使用 ObjectOutputStream ,反序列化使用FileInputStream
3 如果对象在序列化及反序列化的过程中需要做一些特殊的处理,那么你需要在对象所在类里加入下面的方法:
private void writeObject(ObjectOutputStream oos) throws IOException { oos.defaultWriteObject(); // Write/save additional fields oos.writeObject(new java.util.Date()); } // assumes "static java.util.Date aDate;" declared private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); // Read/initialize additional fields aDate = (java.util.Date)ois.readObject(); }
http://java.sun.com/developer/technicalArticles/ALT/serialization/
http://www.tutorialspoint.com/java/java_serialization.htm
http://bluepopopo.iteye.com/blog/486548
http://www.ibm.com/developerworks/cn/java/j-lo-serial/index.html
Cloneable & Object.clone():
1
引用
浅拷贝:只复制一个对象(包括其为基本类型、String的属性),对象内部存在的指向其他对象数组或者引用则不复制
深拷贝:对象,对象内部的引用均复制
为了更好的理解它们的区别我们假设有一个对象A,它包含有2对象对象A1和对象A2:
对象A进行浅拷贝后,得到对象B但是对象A1和A2并没有被拷贝:
对象A进行深拷贝,得到对象B的同时A1和A2连同它们的引用也被拷贝:
在理解了深拷贝和浅拷贝后,我们来看看Java的深拷贝和浅拷贝实现。java.lang.Object的clone()方法默认是返回一个浅拷贝对象。因此如果要用clone()方法实现一个深拷贝,我们必须对每个对象的clone()方法进行特别实现。当对象层次复杂的时候,这样做不但困难而且浪费时间和容易出现错误,特别有时候你不但需要深拷贝同时你也对这个对象进行浅拷贝的时候,你会发现写这个clone()方法真不是一个好的解决方案。
那么除了clone()方法,我们还可以怎么实现呢?答案是序列化,实现步骤和思路是把要拷贝的对象输出成byte array,然后再利用ObjectInputStream转换出新的对象。下面是代码:
深拷贝:对象,对象内部的引用均复制
为了更好的理解它们的区别我们假设有一个对象A,它包含有2对象对象A1和对象A2:
对象A进行浅拷贝后,得到对象B但是对象A1和A2并没有被拷贝:
对象A进行深拷贝,得到对象B的同时A1和A2连同它们的引用也被拷贝:
在理解了深拷贝和浅拷贝后,我们来看看Java的深拷贝和浅拷贝实现。java.lang.Object的clone()方法默认是返回一个浅拷贝对象。因此如果要用clone()方法实现一个深拷贝,我们必须对每个对象的clone()方法进行特别实现。当对象层次复杂的时候,这样做不但困难而且浪费时间和容易出现错误,特别有时候你不但需要深拷贝同时你也对这个对象进行浅拷贝的时候,你会发现写这个clone()方法真不是一个好的解决方案。
那么除了clone()方法,我们还可以怎么实现呢?答案是序列化,实现步骤和思路是把要拷贝的对象输出成byte array,然后再利用ObjectInputStream转换出新的对象。下面是代码:
public static Object copy(Object oldObj) { Object obj = null; try { // Write the object out to a byte array ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(bos); out.writeObject(oldObj); out.flush(); out.close(); // Retrieve an input stream from the byte array and read // a copy of the object back in. ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); ObjectInputStream in = new ObjectInputStream(bis); obj = in.readObject(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException cnfe) { cnfe.printStackTrace(); } return obj; }
发表评论
-
J2SE Evolution
2013-04-11 15:39 1169Java 7 New Features Java SE 7 ... -
未完 Java: IO & NIO(new I/O)
2013-01-11 20:56 2001适用: event and data-driven apps ... -
未完 java设计: naming convention | 命名规范
2012-11-20 16:45 2103应该遵循的规范: 类/接口/属性名,使用名词或形容词 ... -
未完 Java: enum 枚举
2012-11-19 20:29 1775http://stackoverflow.com/que ... -
Java多线程之 concurrent 并发包
2012-11-01 07:47 1973Java Tutorials -> Concur ... -
未完 Java Tips & Tricks & Notes
2012-09-12 10:00 1089Hidden Features of Java: h ... -
未完 Java Socket
2012-09-12 08:42 989Java SocketJava SocketJava Sock ... -
Java For-each Loop & Iterable | 增强型For循环和Iterable接口
2012-09-11 21:50 2018增强型For循环没什么好说的,Just see link ... -
未完 Java Collections | 容器
2012-09-06 11:35 1804Sources: http://docs.oracle.com ... -
Java object Initialization (class Instantiation) | 对象的初始化(即类的实例化)
2012-09-03 09:12 2958类实例即对象 ... -
未完Java class&interfac 's Loading, Linking and Initializing | 类与接口的加载、链接和初始化
2012-08-31 19:01 1629JVM装载一个类的时候,首先检查他有没有父类,如果有父类则装载 ... -
未完 java Static 总结
2012-08-31 18:47 1375static可以用来修饰: 字段 Fields 方法 Meth ... -
未完 JVM Runtime Data Areas & Java Memory Model | 内存分配模型 & Java数据存储
2012-08-31 18:43 1857Java虚拟机内存分配模型 需精读:Chapter 5 of ... -
Java Data Types & Literals | 数据类型 和 字面量
2012-08-30 18:12 3869Java数据类型划分: OR http:// ... -
未完 Variables 变量 (Instance/Class/Local)
2012-08-29 10:59 1655Local/Instance/Class Variables ... -
未完 Regular Expressions | 正则表达式
2011-08-25 11:43 1495Extended Regular Expression ... -
java Date(util.Date/sql.Date/sql.Timestamp/sql.Time) & Oracle DATE Type 时分秒 精度问题
2011-05-17 09:32 3902遇到的问题描述: 数据库为Oracle,其jdbc驱动为ojd ... -
Java byte code (bytecode)
2011-05-04 02:55 3853keys: bytecode, byte code, opco ... -
Java Classloading Mechanism : ClassLoader & ASM & 动态字节码增强
2011-04-21 13:29 2389Setting the class path: http:// ... -
class literal & instance.getClass() & Class.forName(String className)
2011-04-20 12:33 2298常用的几种取得Class类实例的方式: 1 class lit ...
相关推荐
Student.java 定义一个用来序列化的类 ThreadIn.java 接收数据用的线程类 ThreadOut.java 发送数据用的线程类 TypeFile.java 显示文件内容的类 useScanner.java 用Scanner接收用户的输入 第8章 示例描述:本章...
联想旭日C430系列机型支持Vista&7系统BIOS及“Marker”文件。 联想昭阳E390&旭日420系列机型支持Vista&7系统BIOS及“Marker”文件。 注意:此附件marker文件适用于伟创(Wistron)所有主板机型,其中包括:昭阳E390/...
联想旭日C430系列机型支持Vista&7系统BIOS及“Marker”文件。 联想昭阳E390&旭日420系列机型支持Vista&7系统BIOS及“Marker”文件。 注意:此附件marker文件适用于伟创(Wistron)所有主板机型,其中包括:昭阳E390/...
Lenovo&TinkPad; 笔记本Marker工具 5.01 版,文件内包含Bin文件,自己编辑批处理使用即可
marker
js结构如下: -js |- GMap |- GoogleMapsApi.js - google maps api class |- marker.tmpl.js - custom marker template |- stylers.js - JSON styles and custom icon |- index.js - functions to render map, ...
本章将讲述如何利用Marker在地图生成点,并实现点击Marker弹出该点对应的信息。 1.点击点获取坐标 2.在我的项目里,会将地图上的一些飞机作为Marker,点击并弹出该飞机对应的详情 3.点击地图其他区域,将清除所有...
高德地图Marker平滑移动,这是一个让marker在地图上平滑移动的demo
百度地图:Marker+定位到当前位置+计算两个坐标的距离+单击marker事件
联想所有机型marker,值得收藏,现在网上已经不多了。
基于PHP和jQuery的Google地图开发之多个marker显示,并且设置让其在数量过多时聚合。由于是给外国客户开发的接口(还没有做完,只是一个demo),所以里面的说明注释都是英文的,但我相信你们看得懂的
高德地图将带有自定义的图片的marker用连线连起来
不用重新刷主板BIOS,在纯DOS下直接运行MARKER,即可刷进slci2.1,激活Windows7系统。 警告:本Marker针对联想笔记本电脑,选择对应的型号刷写,包括十几种型号,不要选错了。
联想全系列Marker,包含以下: LENOVOCB-01 LENOVOSV-INT LENOVOTC-03 LENOVOTC-5C LENOVOTC-5H LENOVOTC-5I LENOVOTC-5J LENOVOTC-5K LENOVOTC-5M LENOVOTC-5O LENOVOTC-5P LENOVOTC-5V LENOVOTC-5X LENOVOTC-5Y ...
不用刷bios就可拥有slic2.1--联想官方marker工具
百度地图marker动画的实现,动画是基于css3的animation实现的,可以根据需求的不同修改乘不同的动画效果
亲测好用的百度地图海量marker性能优化,包括重写的百度方法以及个人心得
Folder Marker是一款文件夹标记软件,它可以给文件夹更改颜色或者图标,支持应用所选图标到所有文件夹,采用可分配方式,重装系统后标记仍然有效。按自己的要求更新文件夹后看上去更醒目,方便你平时的寻找。关于...
var marker = new BMap.Marker(...); //方法1 map.removeOverlay(marker); //方法2 marker.remove(); //如果是Marker设置的setLabel还可以设置其样式来隐藏 mapComponent.state.bikeMarkLabel.setStyle({ display:...