对所用对象的通用方法
来源:互联网 发布:linux 改名字命令 编辑:程序博客网 时间:2024/05/17 02:10
知识点:
1.建议所有子类都覆盖toString()方法。
2.Object, Integer, String的toString()方法。
3.怎么实现clone方法。
4.深clone和浅clone。
5.拷贝构造器代替clone。
1.建议所有子类都覆盖toString()方法。
覆盖toString()方法的好处就是,我们可以从toString()方法中很方便知道对象的信息。
2.Object, Integer, String的toString()方法。
看下面代码,Object的toString()方法返回类名加内存中地址,Integer的toString()方法,是把自己转换为十进制然后再转为String类型,String的toString()方法就是返回自己。
Object的toString()方法 public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } Integer的toString方法 public String toString() { return toString(value); } public static String toString(int i) { if (i == Integer.MIN_VALUE) return "-2147483648"; int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i); char[] buf = new char[size]; getChars(i, size, buf); return new String(buf, true); } String的toString方法 public String toString() { return this; }
3.怎么实现clone方法。
先看一下Object类的clone方法,是一个本地方法,并且是protected的。如果你的类想要调用clone方法,你必须做到以下几点:
a.实现Cloneable接口
b.用一个公有类覆盖Object的Clone方法。这个方法应该先调用super.clone方法,然后更改需要更改的变量。
protected native Object clone() throws CloneNotSupportedException;
深clone:复制对象和引用,浅clone:只复制引用。Object的clone方法是浅clone.举个简单的例子,看下面代码,类A的对象调用重写的clone方法可以拷贝基本类型a,对于引用类型的b, 只能拷贝其引用。
class A { int a; B b; @Override public A clone() throws CloneNotSupportedException { return (A)super.clone(); } }
public A clone() throws CloneNotSupportedException { A a = (A)super.clone(); a.b = b.clone(); return A; }
5.拷贝构造器代替clone。
除了用clone来构造对象,我们最常用的使用构造器来构造对象。比如上面的类A, 我们想要拷贝,可以用下面代码, 拷贝构造器不用强制对象实现clone接口。
class A { int a; B b; public A(A) {A copyA = new A();copyA.a = A.a; copyB.b = new B(b);return A; } @Override public A clone() throws CloneNotSupportedException { return (A)super.clone(); } }
阅读全文
0 0
- 对所用对象的通用方法
- Effective Java 对于所用对象都通用的方法 11.谨慎地覆盖clone
- Effective Java 对于所用对象都通用的方法 9.覆盖equals时总要覆盖hashCode
- 对所有对象都通用的方法
- 对所有对象都通用的方法
- Effective Java 对于所用对象都通用的方法 8.覆盖equals时请遵守通用约定.txt
- Effective Java 对于所用对象都通用的方法 10.始终要覆盖toString,玩转toString
- Effective Java-2 对所有对象都通用的方法
- Effective Java——对所有对象通用的方法
- Effective Java之对所有对象通用的方法
- effective java之对所有对象都通用的方法
- 《Effective Java》------对所以对象都通用的方法
- 打印对象的通用方法
- 对所有对象都通用的方法规范(改写equals方法)
- Effective Java读书笔记、感悟——2.1对所有对象都通用的方法之equals
- Java高效编程之二【对所有对象都通用的方法】
- [Effective Java]第三章 对所有对象都通用的方法
- 对寄存器操作的通用方法总结
- Linux中的cron和crontab
- 解决recyclerView.setOnScrollChangeListener只能只能在api23以上使用问题
- 详解TCP协议中控制位及URG&PSH的区别
- 架构师之路(十六)
- (转)每个人都应该读一读贝索斯的致股东信 1997-2016
- 对所用对象的通用方法
- jzoj P2153【2017.7.7普及】串
- 广师oj 2238 最长回文子串
- bootstrap路径、分页、标签、徽章
- UnityShader入门精要学习笔记(十一):透明效果-下部分
- 编辑框(CEdit)汇总.
- mysql5.7.18解压版启动mysql服务
- python select网络编程模块详解
- dom4j解析Xml文件工具类