总是覆盖toString()以返回用户可读的信息,注意的地方:
1.提供getter方法以单独获取toString()返回的数据,避免使用者解析toString()以获取数据
2.如果toString()返回的格式化的字符串,那么需提供注释说明,同时提供静态格式化方法
clone方法容易导致错误,一般不建议使用此方法,而是提供相应的构造函数或者静态工厂方法用于对象复制
Object的clone()是protected,并且直接抛出CloneNotSupportedException。子类如果要覆盖clone(),必须声明实现Cloneable接口。如果类声明实现Cloneable接口,那么调用此类的对象的clone()不会抛出异常
一般覆盖clone()代码如下:
@Override //声明为public,不抛出异常,返回具体类型的对象 public PhoneNumber clone(){ try{ //必须调用super.clone()获取被复制的对象 PhoneNumber result=(PhoneNumber)super.clone(); //此处可以设置被复制的对象的具体属性值 return result; }catch (CloneNotSupportedException e) { //因为类声明实现Cloneable接口,所以永远不会抛出此异常 throw new AssertionError(); } }
覆盖clone()需要注意的地方:
1.总是调用super.clone()获取被复制的对象
2.不要在clone()里调用构造函数(应调用super.clone()),复制对象时也不会调用任何构造函数
3.不要在clone()里调用非final的方法,以避免被复制的子类对象状态不正确(子类可能覆盖父类方法以设置自身的属性值)
4.如果类包含final属性,当其对象被clone时,此属性不会被设置(未测试)
5.如果被clone的对象包含非基本数据类型的属性,那么需要自行复制这些属性(deep copy)
6.在多线程环境,考虑使用synchronized声明clone()
相关推荐
前端开源库-safe-tostring-pmbsafe-toString pmb,字符串(x),具有回退到object.prototype.toString.call(x)
前端开源库-es-tostringes-toString,object.prototype.toString.call(obj)的缩写
重写JAVA 程序 tostring()函数,以满足运行时跟综、排错,用log4j的trace级别输出,正常系统运行时不影响性能。 方便生产环境有问题时不停机排查。 主要用于VO或PO。
ToString.Fody 从用[ToString]属性修饰的类的公共属性生成ToString方法。 这是的加载项 期望所有使用开发人员要么,要么拥有。 更多信息,。 用法 另请参阅。 NuGet安装 安装并更新: PM > Install-Package Fody ...
C# ToString格式大全 格式类型有货币、十进制数、科学型、固定点、常规、数字和十六进制
toString()-按大小列出的三角形•类线-长度:int-垂直:布尔值-toString()-行的列表按长度(如果是水平的话)列出,如果不是垂直,则按水平列出·Class Square-大小:int -toString()-按大小打印等边三角形·...
C#中ToString格式大全 C#中ToString格式大全
c#中ToString()的一些常用用法
每个项目我都必用的工具类,使用非常简单,放到项目目录中,java对象继承这个ToString类就可以,用在代码日志里特别方便,还支持过滤特定字段,满足日志保密性要求
返工克隆 该模块将属性从一个规则集克隆到另一个规则集,这与连接选择器的 (rework.extend()) 不同。... toString ( ) ; 选项 这只是一种选择:用正则regexp替换。 var css = rework ( inputCSS ) . use ( clone
map.toString()后转换成Map类型
C#中ToString格式大全
ToString()格式设置大全ToString()格式设置大全ToString()格式设置大全ToString()格式设置大全
System.DateTime.Now.ToString()的各种用法例如//2007-4-24 this.TextBox7.Text = System.DateTime.Now.ToString("d");等...
ToString对各种格式的转换
收藏之toString完美解释
面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将功能封装进对象,强调具备了功能的对象。 面向对象是基于面向过程的。
Laravel的流利验证规则构建器 使用流畅的语法来构建范例: $ rules = [ 'id' => Rule :: int ()-> required (), 'name' => Rule :: string ()-> required ()-> minLength ( 3 )-> toString (), 'email' => Rule :: ...
java内常用包,date类,toString的使用方法
C# Tostring string格式