Questions tagged «java»

Java是最初由Sun Microsystems开发的高级,独立于平台的,面向对象的编程语言。Java目前归甲骨文所有,甲骨文于2010年收购了Sun。

2
检查用@Nonnull注释的参数是否为null?
我们已经开始使用FindBugs并@Nonnull适当地注释了我们的参数,它很有效地指出了周期早期的错误。到目前为止,我们一直在null使用Guava的方法继续检查这些参数checkNotNull,但我宁愿null仅在边缘进行检查-无需检查即可输入值的地方null,例如SOAP请求。 // service layer accessible from outside public Person createPerson(@CheckForNull String name) { return new Person(Preconditions.checkNotNull(name)); } ... // internal constructor accessed only by the service layer public Person(@Nonnull String name) { this.name = Preconditions.checkNotNull(name); // remove this check? } 我了解这本身@Nonnull并不会阻止null价值观。 但是,鉴于FindBugs会指出将值从未标记字段转移到已标记字段的任何地方@Nonnull,我们是否可以依靠它来捕获这些情况(它确实如此),而不必在null传递给它们的任何地方检查这些值系统?我是否天真地想要信任该工具并避免进行这些冗长的检查? 底线:虽然删除null下面的第二张支票似乎很安全,但这是不好的做法吗? 这个问题可能与“ 如果有人不希望null,是否应该检查null”这个问题太相似了,但是我要特别问一下@Nonnull注解。
19 java  null 

9
设计模式在编程中有多重要?
我是一名大学生,我刚刚开始学习设计模式,并努力了解它们的目的。我尝试研究它们,但是我发现的所有资源似乎都是以学术而非专业的方式谈论它们。 他们的目的是什么,对学习重要吗?

6
为什么在MongoDB和CouchDB中使用Javascript而不是Java,C ++等其他语言?
我在SO上问了这个问题,但建议在这里尝试。因此,它去了: 到目前为止,我对Javascript的理解是,它是一种客户端语言,可以捕获事件并使网页动态化。 但是在阅读MongoDB和CouchDB之间的比较时,我注意到它们都使用Javascript。这使我想知道为什么选择JavaScript而不是其他常规语言的原因。 我想我想了解JavaScript的作用及其相对于其他语言的优势。 更新:我不是在问两个数据库支持的语言/驱动程序。比较表明: CouchDB和MongoDB都使用Javascript。CouchDB在视图的构建中广泛使用Javascript 。 MongoDB还支持在服务器端运行任意javascript函数,并将javascript用于map / reduce操作。 我缺乏理解是关于为什么在后端工作中完全使用Javascript。为什么首选在CouchDB中构建视图或使用map / reduce操作?为什么不使用C / C ++或Java?使用Javascript进行此类后端工作有什么优势?
19 java  javascript 

3
Java和.NET:为什么默认情况下使用不同的排序算法?
只是想知道为什么,Java并且.NET Framework默认情况下使用不同的排序算法。 在Java中 ,默认情况下Array.Sort()使用合并排序算法,如Wikipedia.com所述: 在Java中,Arrays.sort()方法根据数据类型使用合并排序或调整后的快速排序,当排序少于七个数组元素时,为了实现转换为插入排序的实现效率 在.NET Framework中, Array.Sort/List.Sort()使用“ 快速排序”作为默认排序算法(MSDN): List.Sort()使用Array.Sort,后者使用QuickSort算法。此实现执行不稳定的排序;也就是说,如果两个元素相等,则可能不会保留其顺序。相反,稳定排序保留了元素相等的顺序。 通过查看出色的“算法比较”表,我们可以发现两种算法在最坏情况和内存使用情况方面的行为都大不相同: 这两个Java和.NET是企业解决方案发展的巨大框架,既有嵌入式开发平台。那么为什么他们默认使用不同的排序算法,有什么想法呢?


9
强制代码重新格式化的优缺点
我目前在一个可能正在强迫开发人员在版本控制签入中使用自动代码格式化程序的地方工作。我正在寻找开发人员关于这样做的优缺点的意见……您认为这对开发人员有何帮助或阻碍。我的具体案例涉及Java / JSP,但我认为该问题可能适用于任何语言。

4
为什么Java集合API没有最后一种方法?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 这用于有序集合,例如java.util.List。语言设计者为什么不包括最后一种方法?我能想到的唯一原因是: 集合为空时的歧义(返回null或引发异常) API膨胀 还有其他原因吗?
19 java  api-design 

12
托管编码员与本地编码员
我是一名编码人员,并且具有本机代码和托管代码的经验。我从Pascal和C开始,然后进入C ++,最后进入C#。 在过去的一年左右的时间里,我几乎一直只使用C#进行编码,并且失去了很多当我使用C ++编码器时自然会遇到的东西。 几周前,当我坐下来写一些本机C ++代码时,我发现自己不知所措,因为我逐渐熟悉了这一切的复杂性,怪癖和特质。我几乎不好意思地说,我完全忘记了将动态分配的数组传递给函数而不传递其大小也意味着接收函数将无法知道数组有多长。 有无数的文章和文档将托管代码与非托管代码进行比较和对比。我们都知道,如果优化得很好,本机代码可以比托管代码运行得更快,更轻。另一方面,托管代码具有垃圾收集器以及特定于运行时的CPU和特定于OS的优化,这可以使本机代码运行自如。 纯粹从技术角度来看,没有明确的赢家。 毫无疑问,托管代码在编码和理解上要简单几个数量级。只需看一下在Win32 C ++与C#中构造一个简单GUI所需的行数差异。 早在我的本机编码时代,我主要编写在超级计算机上运行的数学模拟。他们的CLI很难看,而且大多集中在算法上。如今,我用C#编写并生成了精美的GUI应用程序,但是如果我不得不在本地语言上做出类似的口径,那我就会迷路了。即使使用QT之类的框架,在C ++ / QT中生成某些内容所花费的时间仍比在C#中花费两倍。 每当我看到有人用C / C ++编写了一个大型,功能齐全的GUI应用程序时,我都会不禁感到敬畏和嫉妒。 我很好奇其他经验丰富的程序员如何看待托管和非托管语言。您是否将托管代码视为业余爱好者?您是否认为本地编码员更具有核心性?
19 java  .net 

3
“ Java OOP”和“ Pythonic OOP”之间的区别?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我从ActionScript 2.0开始,然后又从Java开始。从那以后,我已经学习或至少使用了一堆语言,包括Python(可能是我的最爱)。 恐怕我的面向对象编程风格非常不符合Python风格,更像带有Python语法的Java OOP。是什么使Java like和Pythonic OOP彼此不同?用Python编写面向对象的代码时,Java程序员经常做什么?

10
Java开发人员如何看待Scala?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我注意到IDE的支持远非如此,但该语言本身更清晰地支持函数式编程习惯用法。

7
编码样式问题:我们是否应该具有接受参数,修改参数然后返回该参数的函数?
关于这两种做法仅仅是同一枚硬币的两个方面,还是一个真的更好,我正在和我的朋友进行辩论。 我们有一个函数,该函数需要一个参数,填写其中的一个成员,然后返回它: Item predictPrice(Item item) 我相信,由于它可以处理传入的同一对象,因此没有必要继续返回该项目。实际上,从调用者的角度来看,如果有任何事情,它将使您感到困惑,因为您可以期望它返回一个新项目,而不会。 他声称这没有什么区别,即使它确实创建了一个新Item并返回它也没有关系。我强烈不同意,原因如下: 如果您对传入的项有多个引用(或使用指针或其他方式),则分配一个新对象并返回该对象具有重要意义,因为这些引用将是不正确的。 在非内存托管语言中,分配新实例的函数声明了内存的所有权,因此我们将必须实现在某个时候调用的清理方法。 在堆上分配可能很昂贵,因此,对于被调用函数是否执行此操作很重要。 因此,我认为能够通过方法签名查看是修改对象还是分配新对象非常重要。结果,我认为由于函数仅修改传入的对象,因此签名应为: void predictPrice(Item item) 在我使用过的每个代码库中(公认的C和C ++代码库,而不是Java,这都是我们正在使用的语言),上述样式基本上得到了遵守,并且由经验更为丰富的程序员所遵循。他声称,由于我的代码库和同事的样本量在所有可能的代码库和同事中所占的比例很小,因此,我的经验不能真正表明一个人是否优越。 那么,有什么想法吗?

4
使不依赖实例字段的方法变为静态吗?
最近,我开始在Groovy中为Java项目的集成测试框架进行编程。我将Intellij IDEA与Groovy插件一起使用,我很惊讶地看到所有非静态方法并且不依赖于任何实例字段,这是一个警告。但是,在Java中,这不是问题(至少从IDE的角度来看)。 是否将所有不依赖于任何实例字段的方法都转换为静态函数?如果为true,这是特定于Groovy还是通常可用于OOP?又为什么呢

2
为Maven构建Git存储库的最佳方法
我需要一些有关如何在Git中构建项目的建议。我们使用Java,而Maven是我们的构建工具。Maven kinda假定您所有项目最终都有一个共同的祖先。当事情没有完全按照Apache基金会设置项目的方式进行设置时,Maven可能也是真正的戏剧女王(使用发行插件的任何人都可能知道我在说什么)。 我们想要一个用于控制插件版本和构建配置(仓库配置,要构建的工件,命名约定,插件版本等)的顶级父pom。Maven希望我们所有的IT项目都在该主项目的子文件夹中。这意味着该组织需要进行大量的Git回购。 这将导致非常嘈杂的环境。如果有两个团队从事不相关的项目,那么他们将不得不不断地从另一个团队引入合并。理想情况下,我希望每个项目有一个仓库。 但是,这种情况与Maven的极其分层的模型存在冲突,后者要求子项目是子文件夹。 我需要一些有关人们如何协调这两种模型的建议...谢谢!

7
我应该为数据传输对象创建接口吗?
为数据传输对象创建接口是一个好主意还是一个坏主意?假定对象通常是可变的。 尽管我的示例是使用Java编写的,但它应适用于具有类似概念的任何其他语言。 interface DataTransferObject { String getName(); void setName(String name); } class RealDataTransferObject implements DataTransferObject { String name; String getName() { return name; } void setName(String name) { this.name = name; } } 当然,这是一个简化的示例,在现实生活中可能会有更多的领域。

2
“灯具”的不同含义是什么?
我对理解“固定装置”的概念有些困难。我知道什么是测试套件,测试用例,测试运行,但是“夹具”到底是什么?参数化的测试用例? 在我看来,“夹具”一词的含义或语义可能会因编程语言或测试框架而略有不同?我认为一个phpunit夹具 “ 代码将世界设置为已知状态,然后在测试完成时将其返回到其原始状态。该已知状态称为测试的夹具。 ” 与“ 健身器材 ” 略有不同, “ 夹具是Wiki页面和被测系统(SUT)之间的桥梁,被测系统是要测试的实际系统 ”。 这里附近有软件测试专家可以回答这个问题吗?欢迎引用其他编程语言。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.