当前位置: 首页 > news >正文

企业网站制作优化重庆网站建设公司 夹夹虫好

企业网站制作优化,重庆网站建设公司 夹夹虫好,wordpress more标签,怎么样在服务器上建设网站简介 java程序的逻辑是由一个个的方法组成的#xff0c;而在编写方法的过程中#xff0c;我们也需要遵守一定的安全规则#xff0c;比如方法的参数进行校验#xff0c;不要在assert中添加业务逻辑#xff0c;不要使用废弃或者过期的方法#xff0c;做安全检查的方法一定…简介 java程序的逻辑是由一个个的方法组成的而在编写方法的过程中我们也需要遵守一定的安全规则比如方法的参数进行校验不要在assert中添加业务逻辑不要使用废弃或者过期的方法做安全检查的方法一定要设置为private等。 今天我们再来深入的探讨一下java方法的编写过程中还有哪些要注意的地方。 不要在构造函数中调用可以被重写的方法 一般来说在构造函数中只能调用staticfinal或者private的方法。为什么呢 如果父类在执行构造函数的时候调用了一个可以被重写的方法那么在该方法中可能会使用到未初始化的数据从而导致运行时异常或者意外结束。 另外还可能到方法获取到未初始化完毕的实例从而导致数据不一致性。 举个例子我们定义了一个Person的父类 public class Person {public void printValue(){System.out.println(this is person!);}public Person(){printValue();} } 然后定义了一个Boy的子类但是在Boy子类中重新了父类的printValue方法。 public class Boy extends Person{public void printValue(){System.out.println(this is Boy!);}public Boy(){super();}public static void main(String[] args) {Person persion new Person();Boy boy new Boy();} } 输出结果 this is person! this is Boy! 可以看到Boy调用了自己重写过的printValue方法。 注意这里并不是说会产生语法错误而是这样会导致业务逻辑看起来非常混乱。 怎么解决呢简单办法就是将Person中的printValue置位final即可。 不要在clone()方法中调用可重写的方法 同样的我们在定义clone方法的时候也不要调用可重写的方法否则也会产生意想不到的变化。 还是上面的例子这次我们添加了clone方法到Person类 public Object clone() throws CloneNotSupportedException {Person person (Person)super.clone();person.printValue();return person;} 接下来我们添加clone方法到Boy类 public Object clone() throws CloneNotSupportedException {Boy clone (Boy) super.clone();clone.printValue();return clone;} 因为在clone方法中调用了可重写的方法从而让系统逻辑变得混乱。不推荐这样使用。 重写equals()方法 考虑一下父类和子类的情况如果在父类中我们定义了一个equals方法这个方法是根据父类中的字段来进行比较判断最终决定两个对象是否相等。 如果子类添加了一些新的字段如果不重写equals方法而是使用父类的equals方法那么就会遗漏子类中新添加的字段最终导致equals返回意想不到的结果。 所以一般来说子类需要重写equals方法。 如果重新equals方法需要满足下面几个特性 reflexive反射性 对于一个Object a来说a.equals(a)必须成立。 symmetric对称性 对于一个Object a和Object b来说如果a.equals(b)true那么b.equals(a)true一定成立。 transitive传递性 对于Object a,b,c来说如果a.equals(b)true,b.equals(c)true,那么a.equals(c)true一定成立。 consistent一致性 对于Object ab来说如果a和b没有发生任何变化那么a.equals(b)的结果也不能变。 对于非空的引用aa.equals(null) 一定要等于false 具体代码的例子这里就不写了大家可以自行练习一下。 hashCode和equals hashCode是Object中定义的一个native方法 HotSpotIntrinsicCandidatepublic native int hashCode(); 根据Oracle的建议如果两个对象的equals方法返回的结果是true那么这两个对象的hashCode一定要返回同样的int值。 为什么呢 我们看下下面的一个例子 public class Girl {private final int age;public Girl(int age) {this.age age;}Overridepublic boolean equals(Object o) {if (o this) {return true;}if (!(o instanceof Girl)) {return false;}Girl cc (Girl)o;return cc.age age;}public static void main(String[] args) {HashMapGirl,Integer hashMap new HashMap();hashMap.put(new Girl(20), 20);System.out.println(hashMap.get(new Girl(20)));} } 上面的Girl中我们定义了equals方法但是并没有重写hashCode最后返回的结果是null。 因为我们new了两次Girl这个对象最后导致native方法中两个不同对象的hashCode是不一样的。 我们可以给Girl类中添加一个hashCode方法 public int hashCode() {return age;} 这样就可以返回正确的值。 compareTo方法的实现 我们在实现可比较类的时候通常需要实现Comparable接口。Comparable接口定义了一个compareTo方法用来进行两个对象的比较。 我们在实现compareTo方法的时候要注意保证比较的通用规则也就是说如果x.compareTo(y) 0 y.compareTo(z) 0 那么表示 x.compareTo(z) 0. 所以我们不能使用compareTo来实现特殊的逻辑。 最近看了一个日本的电影叫做dubo默示录里面有一集就是石头剪刀布来判断输赢。 当然石头剪刀布不满足我们的通用compareTo方法所以不能将逻辑定义在compareTo方法中。 原文链接 本文为阿里云原创内容未经允许不得转载。
http://www.zqtcl.cn/news/566823/

相关文章:

  • 中国交建平台seo搜索引擎优化是通过优化答案
  • 简述网站的建设流程图食品网站app建设方案
  • 西安建设厅网站首页听说上海又要封了
  • 兼职python做网站如何制作一个网站包含多个网页
  • 花园桥网站建设百度怎么创建网站
  • 做网站 客户一直要求改做网站学不需要做后台管理系统
  • 企业网站托管电话输入姓名查询个人征信
  • 域名注册了后怎么建设网站荆州市建设厅网站
  • 厦门网站建设合同wordpress的设置网址
  • 澎湃动力网站建设公司门户类网站建设需要多少钱
  • 祭祖网站怎么做咨询类网站开发的意义
  • 简书网站开发热门电影推荐
  • 中学教材数字化学习资源的建设——教材配套网站的设计及发展趋势建网站 发信息 做推广
  • 怎么写网站建设方案书制做网站的公司
  • 服务网站 建设原则游戏服务器租用多少钱一年
  • 软件网站下载现在出入深圳最新规定
  • 长宁专业网站制作公司陕西网站建设哪家专业
  • 重庆做的好的房产网站衡水的网站建设
  • 宜春网站开发网页编辑器安卓版
  • 网站建设外包兼职建设工程合同可以分为
  • 我国网络营销现状分析重庆网站seo营销模板
  • 深圳建站公司网站免费推广预期效果
  • html5 国外网站后台网站要做权限前端还是后台做
  • 免费建自己的网站网站标题 关键词 描述之间的关系
  • 提供响应式网站建设wordpress怎么做背景图片
  • 相亲网与做网站做网站的目的与意义
  • 做网站字体大小网站建设是属于虚拟产品吗
  • 网站的内链怎么做校园网建设网站特色
  • 优化网站标题企业的网站一般做哪些维护
  • 聊天网站备案南阳定制网站制作价格低