草庐IT

java - "static"模式不应该总是静态的吗?

我刚刚在一些我没有写的代码中发现了一个错误,我有点惊讶:Patternpattern=Pattern.compile("\\d{1,2}.\\d{1,2}.\\d{4}");Matchermatcher=pattern.matcher(s);尽管这段代码在我们得到的输入数据上失败了(因为它试图以17.01.2011格式查找日期并取回10396/2011之类的内容,然后由于无法解析日期,但真的不是这个问题的重点;)我想知道:Pattern.compile的重点之一不是作为速度优化(通过预编译正则表达式)吗?所有“静态”模式不应该总是编译成静态模式吗?网络上有很多示例,其中总是使用Patt

java - 为什么我不应该使用 date4j 而不是 joda java.util.Calendar 或 jsr 310?

我最近遇到了date4j,一个非常简单的库(本质上是一个类),用于在Java中处理日期。从概念上讲,我真的很喜欢date4j的“想法”。事实上,在阅读了整个主站点和javadoc中的文档之后,我非常同意所陈述的一切。现在,可能我不应该使用date4j的几个原因-错误、性能、缺乏用户等。我不是在问这些事情。从概念上讲,我在问date4j的想法有什么问题(对于那里的大多数应用程序)?当然,可能有一些应用程序需要joda或threeten之类的东西-但我相信这些应用程序属于少数。人们对处理日期/时间的用户(几乎每个编写Java应用程序的人)给出的一般建议是:使用joda-time代替java

java - 为什么我不应该使用 date4j 而不是 joda java.util.Calendar 或 jsr 310?

我最近遇到了date4j,一个非常简单的库(本质上是一个类),用于在Java中处理日期。从概念上讲,我真的很喜欢date4j的“想法”。事实上,在阅读了整个主站点和javadoc中的文档之后,我非常同意所陈述的一切。现在,可能我不应该使用date4j的几个原因-错误、性能、缺乏用户等。我不是在问这些事情。从概念上讲,我在问date4j的想法有什么问题(对于那里的大多数应用程序)?当然,可能有一些应用程序需要joda或threeten之类的东西-但我相信这些应用程序属于少数。人们对处理日期/时间的用户(几乎每个编写Java应用程序的人)给出的一般建议是:使用joda-time代替java

java - 为什么不应该扩展 JFrame 和其他组件?

这个问题在这里已经有了答案:ExtendsJFramevs.creatingitinsidetheprogram(6个回答)关闭11个月前。我已经看到这里出现了几次,但是在我看到的帖子中,没有人解释它。为什么我不应该扩展JFrame(或任何组件)?是否存在我应该扩展组件的条件,或者这是您不应该扩展的固定规则? 最佳答案 一般来说,扩展组件倾向于严格使用组件。这在设计方面以不必要的方式严重限制了您的选择,因此您的类无法扩展不同的类,您无法隐藏JFrame的方法,导致它更难以维护并且更容易在使用该类时触发意外错误.通常的意图是严格使用类

java - 为什么不应该扩展 JFrame 和其他组件?

这个问题在这里已经有了答案:ExtendsJFramevs.creatingitinsidetheprogram(6个回答)关闭11个月前。我已经看到这里出现了几次,但是在我看到的帖子中,没有人解释它。为什么我不应该扩展JFrame(或任何组件)?是否存在我应该扩展组件的条件,或者这是您不应该扩展的固定规则? 最佳答案 一般来说,扩展组件倾向于严格使用组件。这在设计方面以不必要的方式严重限制了您的选择,因此您的类无法扩展不同的类,您无法隐藏JFrame的方法,导致它更难以维护并且更容易在使用该类时触发意外错误.通常的意图是严格使用类

java - Java中的最终类不应该是最终的,反之亦然?

我最近在一次采访中被问到这个问题:CanyounameanyclassintheJavaAPIthatisfinalthatshouldn'tbeoronethatisn'tandshouldbe'?我什么都想不出来。这个问题意味着我应该对所有的API类都了如指掌,我个人不希望任何Java开发人员知道。如果有人知道任何此类类(class),请提供示例。 最佳答案 java.awt.Dimension不是最终的或不可变的,应该是。任何返回Dimension(例如Window对象)的东西都需要制作防御性副本,以防止调用者做讨厌的事情。

java - Java中的最终类不应该是最终的,反之亦然?

我最近在一次采访中被问到这个问题:CanyounameanyclassintheJavaAPIthatisfinalthatshouldn'tbeoronethatisn'tandshouldbe'?我什么都想不出来。这个问题意味着我应该对所有的API类都了如指掌,我个人不希望任何Java开发人员知道。如果有人知道任何此类类(class),请提供示例。 最佳答案 java.awt.Dimension不是最终的或不可变的,应该是。任何返回Dimension(例如Window对象)的东西都需要制作防御性副本,以防止调用者做讨厌的事情。

java - 数组不应由数组初始化程序静态初始化。为什么?

这是来自Google静态分析器CodeProAnalytiX的规则之一:总结数组不应由数组初始化器静态初始化。说明此审核规则检查使用数组初始化程序初始化(在初始化程序中或在赋值语句中)的数组变量。示例由于使用了数组初始值设定项,以下数组声明将被标记:int[]values={0,1,2};现在,如果我不喜欢它,我可以禁用它,这不是问题。但我想知道为什么这会是一个问题,以及防止该代码被审计规则标记的解决方案是什么? 最佳答案 这是一个有趣的问题,恕我直言,这个决定毫无根据。(如果这个设计决定背后有正当理由,我希望其他人能回答这个帖子)

java - 数组不应由数组初始化程序静态初始化。为什么?

这是来自Google静态分析器CodeProAnalytiX的规则之一:总结数组不应由数组初始化器静态初始化。说明此审核规则检查使用数组初始化程序初始化(在初始化程序中或在赋值语句中)的数组变量。示例由于使用了数组初始值设定项,以下数组声明将被标记:int[]values={0,1,2};现在,如果我不喜欢它,我可以禁用它,这不是问题。但我想知道为什么这会是一个问题,以及防止该代码被审计规则标记的解决方案是什么? 最佳答案 这是一个有趣的问题,恕我直言,这个决定毫无根据。(如果这个设计决定背后有正当理由,我希望其他人能回答这个帖子)

java - 为什么没有 java.lang.Array 类?如果一个java数组是一个对象,它不应该扩展对象吗?

这里是java包树:http://docs.oracle.com/javase/7/docs/api/java/lang/package-tree.html我阅读了一篇关于Java的教程,其中指出在Java中数组是对象。数组类在哪里?为什么我们可以制作这样的数组:byte[]byteArr=newbyte[];char[]charArr=newchar[];int[]intArr=newint[];并且数组将继承Object的方法;例如:bytethisByte=1;bytethatByte=2;byte[]theseBytes=newbyte[]{thisByte,thatByte}