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

做团购网站宁波市网站建设公司

做团购网站,宁波市网站建设公司,seo推广多少钱,wordpress 修改结果集 tostring使用Java或我使用过的其他编程语言#xff0c;我发现有时候可以用该语言完成某些事情#xff0c;但通常不应该这样做。 通常#xff0c;这些误用语言似乎无害#xff0c;当开发人员首次使用它们时可能是有益的#xff0c;但后来同一位开发人员或另一位开发… 结果集 tostring 使用Java或我使用过的其他编程语言我发现有时候可以用该语言完成某些事情但通常不应该这样做。 通常这些误用语言似乎无害当开发人员首次使用它们时可能是有益的但后来同一位开发人员或另一位开发人员遇到了相关的问题需要克服或改变这些代价。 一个示例也是本博客文章的主题是使用Java中toString()调用的结果进行逻辑选择或对其内容进行解析。 在2010年我用Java语言编写了toString注意事项 当toString()方法可明确用于类时以及当它们包含该类对象的相关公共状态时我通常会首选它。 我仍然有这种感觉。 但是我希望toString()实现足以使人们通过记录的语句或调试器读取对象的内容而不是要由代码或脚本解析的内容。 使用toString()方法返回的String进行任何类型的条件或逻辑处理都非常脆弱。 同样解析toString()返回的String以获取有关实例状态的详细信息也是脆弱的。 我警告过甚至是无意间要求开发人员在前面提到的博客文章中解析toString()结果。 开发人员可能出于多种原因选择更改toString()的生成的String包括将现有字段添加到以前可能未表示过的输出中将更多数据添加到已经表示过的现有字段中为新添加的字段添加文本删除不再在课程中的字段的表示形式或出于美学原因更改格式。 开发人员还可以更改toString()生成的String拼写和语法问题。 如果toString()提供的String仅由人类在日志消息中分析对象的状态时使用则除非它们删除了实质信息否则这些更改不太可能成为问题。 但是如果代码依赖于整个String或为某些字段解析String 则可以通过这些类型的更改轻松地将其破坏。 出于说明目的请考虑以下Movie类的初始版本 package dustin.examples.strings;/*** Motion Picture, Version 1.*/ public class Movie {private String movieTitle;public Movie(final String newMovieTitle){this.movieTitle newMovieTitle;}public String getMovieTitle(){return this.movieTitle;}Overridepublic String toString(){return this.movieTitle;} } 在这个简单且有些人为的示例中只有一个属性因此类的toString()仅仅返回该类的单个String属性作为类的表示形式并不稀奇。 下一个代码清单包含一个不幸的决定第22-23行该决定基于Movie类的toString()方法的逻辑。 /*** This is a contrived class filled with some ill-advised use* of the {link Movie#toString()} method.*/ public class FavoriteMoviesFilter {private final static ListMovie someFavoriteMovies;static{final ArrayListMovie tempMovies new ArrayList();tempMovies.add(new Movie(Rear Window));tempMovies.add(new Movie(Pink Panther));tempMovies.add(new Movie(Oceans Eleven));tempMovies.add(new Movie(Ghostbusters));tempMovies.add(new Movie(Taken));someFavoriteMovies Collections.unmodifiableList(tempMovies);}public static boolean isMovieFavorite(final String candidateMovieTitle){return someFavoriteMovies.stream().anyMatch(movie - movie.toString().equals(candidateMovieTitle));} } 尽管有多个电影共用同一标题 但尽管存在一些潜在的问题但该代码似乎仍然可以工作一段时间。 但是即使在遇到这些问题之前如果开发人员确定他或她想将Movie.toString()表示形式的格式更改为下一个显示的内容则可能会意识到在相等性检查中使用toString()的风险。代码清单。 Override public String toString() {return Movie: this.movieTitle; } 也许更改了Movie.toString()返回值以使提供的String与Movie类的实例相关联更加清楚。 不管进行更改的原因如何以前列出的在影片标题上使用相等性的代码现在都已损坏。 该代码需要更改为使用contains而不是equals 如下面的代码清单所示。 public static boolean isMovieFavorite(final String candidateMovieTitle) {return someFavoriteMovies.stream().anyMatch(movie - movie.toString().contains(candidateMovieTitle)); } 当意识到Movie类需要更多信息来使电影与众不同时开发人员可以将发行年份添加到movie类。 接下来显示新的Movie类。 package dustin.examples.strings;/*** Motion Picture, Version 2.*/ public class Movie {private String movieTitle;private int releaseYear;public Movie(final String newMovieTitle, final int newReleaseYear){this.movieTitle newMovieTitle;this.releaseYear newReleaseYear;}public String getMovieTitle(){return this.movieTitle;}public int getReleaseYear(){return this.releaseYear;}Overridepublic String toString(){return Movie: this.movieTitle;} } 添加发行年份有助于区分具有相同标题的电影。 这也有助于将翻拍与原作区分开。 但是无论电影发行的年份如何使用Movie类查找收藏夹的代码仍将显示所有具有相同标题的电影。 换句话说1960年版的《 海洋十一人》 目前对IMDB评分为6.6 将与2001年版的《 海洋十一人》 目前对IMDB评分为7.8 一起成为人们的最爱尽管我更喜欢较新的版本。 同样1988年提出为电视版后窗 的5.6评级目前IMDB 将返回为收藏旁边的1954年版后窗 执导的阿尔弗雷德·希区柯克 主演詹姆斯·斯图尔特和格蕾丝·凯莉 以及额定8.5目前在IMDB中 尽管我更喜欢旧版本。 我认为toString()实现通常应包含对象的所有公共可用细节。 但是即使将Movie的toString()方法增强为包括发行年份客户端代码也不会基于年份进行区分因为它仅对电影标题执行contain 。 Override public String toString() {return Movie: this.movieTitle ( this.releaseYear ); } 上面的代码显示了添加到Movie的toString()实现中的发行年份。 下面的代码显示了如何更改客户以正确遵守发布年份。 public static boolean isMovieFavorite(final String candidateMovieTitle,final int candidateReleaseYear) {return someFavoriteMovies.stream().anyMatch(movie - movie.toString().contains(candidateMovieTitle) movie.getReleaseYear() candidateReleaseYear); } 我想情况下它是一个解析一个好主意这是很难toString()上的结果方法或基础条件或其他逻辑toString()方法。 在我考虑的几乎所有示例中都有更好的方法。 在上面的示例中最好向Movie添加equals() 和hashCode() 方法然后对Movie实例使用相等性检查而不要使用单个属性。 如果确实需要比较各个属性例如在不需要对象相等且只需要一个或两个字段相等的情况下则可以使用适当的getXXX方法。 作为一名开发人员如果我希望类的用户通常会最终包括我自己不需要解析toString()结果或依赖于某个结果则需要确保我的类使toString()提供任何有用的信息toString()可从其他易于访问且更编程友好的资源中获得例如“获取”方法以及相等性和比较方法。 如果开发人员不想通过公共API公开某些数据则很可能开发人员也可能真的不想在返回的toString()结果中公开数据。 Joshua Bloch Effective Java以粗体强调该文本“……提供对toString()返回的值中包含的所有信息的编程访问。” 在Effective Java中 Bloch还包括有关toString()方法是否应具有其提供的String表示形式的公告格式的讨论。 他指出这种表示形式如果进行广告宣传必须是从那时起一直使用的如果它是广泛使用的类则可以避免我在本文中演示的运行时中断类型。 他还建议如果不能保证格式保持不变则Javadoc也应包含与此相关的声明。 通常由于Javadoc和其他注释经常比我想要的更被忽略并且由于所宣传的toString()表示形式具有“永久性”因此我宁愿不依赖于toString()提供客户端所需的特定格式而是提供一种专用于客户可以调用的方法。 这使我可以灵活地在类更改时更改toString() 。 JDK中的示例说明了我的首选方法还说明了将特定格式指定为toString()的早期版本的危险。 BigDecimal的toString表示在JDK 1.4.2和Java SE 5之间进行了更改如“ J2SE 5.0中的不兼容性自1.4.2起 ”所述“ J2SE 5.0 BigDecimal的toString()方法的行为与早期版本不同版本。” BigDecimal.toString()的1.4.2版本的Javadoc仅在方法概述中声明“返回此BigDecimal的字符串表示形式。 使用Character.forDigitintint提供的数字到字符的映射。 前导减号用于表示符号小数点右边的位数用于表示刻度。 此表示形式与字符串构造函数兼容。” Java SE 5和更高版本中BigDecimal.toString的相同方法概述文档更加详细。 这样冗长的描述在此不再赘述。 当BigDecimal.toString()是与Java SE 5改变 其他的方法被引入本不同String表示 toEngineeringString和toPlainString 。 新引入的方法toPlainString()提供了JDK 1.4.2提供的BigDecimal的toString() 。 我倾向于提供提供特定String表示形式和格式的方法因为这些方法可以具有其名称中描述的格式的细节并且Javadoc注释以及对类的更改和添加不会像对它们产生影响那样对这些方法产生影响一般的toString()方法。 有一些简单的类可能适合原始实现的toString()方法将一劳永逸地修复且“永远不会”改变的情况。 那些可能是解析返回字符串或在基础逻辑候选String 但即使在这种情况下我更喜欢提供一种具有广告和有保证的格式的另一种方法和离开toString()表示一些灵活性变化。 拥有多余的方法没什么大不了的因为尽管它们返回相同的内容但多余的方法可以仅仅是调用toString的单行方法。 然后如果toString()确实发生了变化则可以将调用方法的实现更改为以前提供的toString() 并且该额外方法的任何用户都不会看到任何更改。 当将toString()结果解析为逻辑或基于toString()调用的结果逻辑时最有可能在将特定方法视为客户访问特定数据的最简单方法时进行。 最好通过其他特定的公共可用方法来使数据可用并且类和API设计人员可以通过确保toString()提供的String中甚至可能有用的任何数据也可以通过编程访问的特定替代方式来提供帮助。方法。 简而言之我的首选是将toString()一种方法以查看有关表示形式中实例的一般信息该实例可能会发生更改并为表示形式中的特定数据段提供特定的方法这些数据的更改可能性较小且更容易以编程方式访问决策并基于可能需要特定于格式的解析的大型String进行决策。 翻译自: https://www.javacodegeeks.com/2016/05/virtues-avoiding-parsing-basing-logic-tostring-result.html结果集 tostring
http://www.huolong8.cn/news/383582/

相关文章:

  • 广州专业网站建设公司建筑工程网首页
  • 做中介最好用的网站江阴网站制作
  • “设计网站”备案的网站每年都要备案么
  • 网站建设就业方向搜索引擎优化策略不包括
  • 济宁网站建设 悍诺苏州网络推广优化
  • 平顶山哪里有做网站的公司番禺微网站建设
  • 做网站需要哪些知识网页浏览器主要通过什么协议
  • html5 国外网站html网页设计模板免费下载
  • 企业网站建设合同方案wordpress博文模板
  • 用php做企业网站的可行性Wordpress 大数据量优化
  • 网站分站系遵化建设局网站
  • 保山网站建设优化wap网站psd
  • 网站在线支付接口清河网站建设设计费用
  • 响应式网站开发方法分成型网站建设
  • 邢台集团网站建设价格seo wordpress主题
  • 如何把自己电脑做网站服务器吗平面设计广告设计
  • 网站建设完成后怎么上传服务器广东学校网站建设公司
  • 做美团网站需要多少钱召开网站建设培训会
  • 上传了网站程序后成立一个网站
  • 哪个网站看电视剧最全还免费大学生网站建设方案
  • 做网站页面一般用什么软件wordpress文章中标签
  • 徐州网站建设找哪家怎么样推广自己的公司
  • 企业网站建设用什么云主机费用
  • html5国内网站北京网站开发公司有哪些
  • 做餐饮在环保局网站备案模板网站难做seo
  • 网站建设补充合同范本国家住房和城乡建设部官方网站
  • wordpress 用户注册 插件南京做网站优化公司
  • 宁波营销型网站建设首选宠物网站建设
  • 西安网站优化维护网页设计颜色代码表
  • 做网站找人网站首页做后台链接