Questions tagged «java»

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

6
在Java中使用静态构造函数
我没有完全理解Java中的静态构造函数。如果允许,为什么要允许?在什么情况下会使用它?它有什么作用?有人可以给我一个简单的例子吗?
11 java 


10
有关如何反驳代码覆盖率质量参数的任何工具/建议
现在,我知道人们会认为这个问题重复或被问过很多次,在这种情况下,我希望获得与相关问题的链接以及我的问题的答案。 我最近在代码覆盖方面与某些人意见不一致。我有一群人希望我们的团队基于100%的覆盖率并不意味着良好的质量测试以及良好的代码质量就完全放弃代码覆盖率的研究。 通过推销“代码覆盖率”可以告诉我尚未确定的内容的论点,我可以进行回退,并帮助我们专注于这些领域。 (以上已经在类似这样的其他SO问题中以类似的方式进行了讨论-https: //stackoverflow.com/questions/695811/pitfalls-of-code-coverage) 这些人的论据是-然后,团队会做出反应,迅速创建质量低下的测试,从而浪费时间,同时又不增加明显的质量。 在理解他们的观点的同时,我正在寻找一种方法,通过引入更健壮的工具/框架来照顾更多的覆盖标准, 从而使代码覆盖更可靠(Functional, Statement,Decision, Branch, Condition, State, LCSAJ, path, jump path, entry/exit, Loop, Parameter Value etc)。 我正在寻找的建议是将这样的代码覆盖率工具和实践/过程结合在一起使用,这可以帮助我在对建议感到满意的同时反驳此类争论。 我也欢迎根据您的经验/知识如何提出反对意见提出的任何评论/建议,因为尽管主观,但是代码覆盖率使我的团队更加意识到了代码质量和测试价值。 编辑:为了减少对我对典型代码覆盖范围弱点的理解的困惑,我想指出的是,我并不是指 Statement Coverage(或执行的代码行)工具(有很多)。实际上,这里有一篇很好的文章介绍了所有错误之处:http : //www.bullseye.com/statementCoverage.html 我不仅在寻找语句或行覆盖率,而且还在寻找多个覆盖率标准和级别。 请参阅:http : //en.wikipedia.org/wiki/Code_coverage#Coverage_criteria 这个想法是,如果一个工具可以根据多个标准告诉我们我们的覆盖范围,那么它将成为对测试质量的合理自动化评估。我绝不是要说线路覆盖率是一个很好的评估。实际上,这就是我提出这个问题的前提。 编辑: 好的,也许我对它的预测太过夸张了,但是您明白了。问题在于以统一/一致的方式在所有团队中设置流程/策略。人们普遍担心,您如何确保测试质量,如何在没有任何措施的情况下分配保证的时间。因此,我喜欢具有可测量的功能,当使用适当的流程和正确的工具进行备份时,它将使我们能够提高代码质量,同时又知道不会浪费时间在浪费性的流程上。 编辑:到目前为止,我从答案中得到了什么: 代码审查应涵盖测试以确保测试质量 “测试优先”策略有助于避免事后写出的测试仅增加覆盖率% 探索涵盖测试标准的替代工具,而不仅仅是声明/行 分析覆盖的代码/发现的错误数量将有助于理解覆盖的重要性并提供更好的案例 最重要的是,请信任团队的投入以做正确的事并为自己的信念而战 涵盖的区块/测试数量-值得商but,但具有一定价值 感谢您迄今为止的出色回答。我真的很感激他们。此功能比具有强大功能的头脑风暴要好几个小时。

5
数据库连接-应该将它们作为参数传递吗?
我们有一个系统,通过该系统,可以使用通用方法获得一次数据库连接,并在整个要使用的相关类中传递数据库连接。有人怀疑将数据库连接作为参数传递给不同的类会导致问题,因此我在这里检查是否确实可行,并且还有更好的模式吗? 我知道有一些ORM工具可以实现持久性,但我们还不能介绍。 欢迎任何反馈,谢谢。

2
如何解决循环包装的依赖性
我正在重构一个大型代码库,其中大多数类位于一个包中。为了获得更好的模块化,我为每种功能都创建了子包。 我记得在某处学习过包依赖关系图不应包含循环的信息,但我不知道如何解决以下问题:Figure在package中figure,Layout在package中layout,Layout需要该图执行布局,因此package layout依赖于package figure。但另一方面,a Figure可以Figure在其内部包含其他s,它们具有自己的Layout,这使得package figure依赖于package layout。 我有一些解决方案,例如创建一个实现并将其放入包中的Container接口。这是一个好的解决方案吗?还有其他可能性吗?FigureLayout 谢谢

2
Java的新发展将如何影响其与Scala和Clojure等语言的互操作性?
据我了解,Scala和Clojure都被设计为新的语言, 取决于JVM,并且 从某种意义上说,它们可以轻松地与Java代码集成,因为它们允许在Scala和Clojure代码中使用Java类。 从Java 8开始(或者在后续的Java版本中可能更强大),Java语言的语义将发生变化。 我想问一下这些变化将如何影响Java与Scala / Clojure之间的互操作性,以及将会带来什么后果。例如,由于Java 8中的lambda不是对象(请参见here),所以Scala和Clojure可能必须处理不是对象的Java值。这会是个问题吗? 我可以想到以下情形: Scala或Clojure语言将得到扩展,以适应新的Java语义(以处理新的非对象值)并支持与Java的互操作性。 Scala或Clojure语言将不会扩展。仅当新的Java功能(例如函数值)可以映射到现有概念时,这才有可能。例如,在Scala中,甚至函数都是对象,因此我猜Java函数在对Scala可见时会再次被包装到某种对象中。 Scala或Clojure语言将继续支持直至Java 6或7的互操作性,而无需关注Java的最新发展。这将要求仍旧支持Java的较早版本(至少由OpenJDK或其他项目支持),以便这些语言可以基于Java的更为保守/稳定的分支。 总结:我们可以期望Java的未来发展会对Scala和Clojure等语言产生影响,以保持与Java的互操作性吗?已经有一些(链接到)有关此主题的正在进行的讨论吗? 注意 我可以想象Scala,Clojure和其他基于JVM的语言在将其实现更新到较新版本的JVM时不会有任何重大问题(并且新的JVM功能将使此实现更加容易)。我的问题集中在Java语言的功能以及其他JVM语言是否能够/如何“看到” /使用这些新功能,而不是基于JVM的语言是否可以在最新的JVM上运行。
11 java  scala  clojure 

4
为什么WAR无法共享会话信息?
我已经看到一些开发人员在寻找解决此问题的方法:从不同的WAR(即使在同一EAR中)访问会话信息 -以下是一些示例:在tomcat中不同应用程序之间共享会话状态的任何方法?,访问另一个Web应用程序的会话,不同的WAR文件,共享资源,Tomcat:如何在两个应用程序之间共享数据?,crossContext属性在Tomcat中做什么?是否启用会话共享?等等... 从我搜索过的所有内容来看,有一些特定的解决方案取决于容器,但这在某种程度上“ 与规范相反 ”。我也浏览了Java EE规范,但没有找到答案的运气。 一些开发人员谈论Web应用程序之间的耦合,但是我倾向于不同意。如果不耦合,将WAR保留在同一个EAR中的原因是什么?例如,可以在本地访问EJB(即使在同一EAR中的另一个EJB JAR中也可以访问)。 更具体地说,我的一个WAR处理身份验证和授权,并且我想与其他WAR(在同一EAR中)共享此信息。在将WAR打包为JAR并将它们放入单个WAR项目(WEB-INF / lib)之前,我设法解决了类似的问题。但是我不喜欢这种解决方案(它需要在servlet命名上付出巨大的努力等等)。 而且没有解决方案可以回答第一个(也是最重要的)问题:为什么WAR无法共享会话信息?

3
模拟具体课程-不推荐
我刚刚读了《成长面向对象的软件》一书的摘录,其中解释了为什么不建议模拟具体类的一些原因。 以下是MusicCentre类的单元测试的一些示例代码: public class MusicCentreTest { @Test public void startsCdPlayerAtTimeRequested() { final MutableTime scheduledTime = new MutableTime(); CdPlayer player = new CdPlayer() { @Override public void scheduleToStartAt(Time startTime) { scheduledTime.set(startTime); } } MusicCentre centre = new MusicCentre(player); centre.startMediaAt(LATER); assertEquals(LATER, scheduledTime.get()); } } 和他的第一个解释: 这种方法的问题在于,它使对象之间的关系保持隐式。我希望我们现在已经弄清楚了,使用模拟对象进行测试驱动开发的目的是发现对象之间的关系。如果我是子类,则域代码中没有任何东西可以使这种关系可见,而只是对象上的方法。这使得很难看到支持这种关系的服务是否在其他地方有用,下次我与该类一起工作时,我将不得不再次进行分析。 他说的时候我无法确切知道他的意思: 这使得很难看到支持这种关系的服务是否在其他地方有用,下次我与该类一起工作时,我将不得不再次进行分析。 我了解该服务对应于MusicCentre称为的方法startMediaAt。 他在“其他地方”是什么意思? 完整的摘录在这里:http : …

8
与C / C ++相比,Java难于“调整”性能吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 JVM的“魔力”是否会阻碍程序员对Java的微优化的影响?我最近用C ++阅读,有时数据成员的排序可以提供优化(在微秒级环境中是允许的),并且我想程序员在压缩Java性能时会束手无策吗? 我很欣赏体面的算法可以提供更高的速度增益,但是一旦有了正确的算法,由于JVM控制,Java很难进行调整吗? 如果不是这样,人们能否举例说明您可以在Java中使用哪些技巧(除了简单的编译器标志)。

2
JavaDoc中不推荐使用vs.
在JavaDoc中X509Certificate getSubjectDN()指出: Denigrated,由getSubjectX500Principal()代替。 我习惯在for方法中看到已弃用,该方法不再使用,但不可贬低。我发现了一个有关此特殊情况的错误报告,该错误报告已通过注释关闭: 这不是错误。“不推荐使用”仅在严重情况下使用。 当我们使用不推荐使用的方法时,建议采取的一般措施是停止使用该方法。 那么,将方法标记为“已贬义”时,建议采取的措施是什么?

6
Java开发人员应该了解垃圾收集算法吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 最近有人在采访中问我是否知道任何垃圾收集算法。 我知道什么是垃圾回收,但是我从未真正考虑过学习垃圾回收算法,因为作为开发人员,我不必担心它,垃圾回收器为我完成了所有艰苦的工作。 你们认为Java开发人员应该了解垃圾收集器算法吗?如果是,您能告诉我应该看哪个?

9
使用哪种OO设计(是否有设计模式)?
我有两个代表“酒吧/俱乐部”(您喝酒/社交的地方)的对象。 在一种情况下,我需要栏名称,地址,距离,标语 在另一种情况下,我需要栏名称,地址,网站网址,徽标 因此,我有两个对象代表相同的事物,但具有不同的字段。 我喜欢使用不可变的对象,因此所有字段都是从构造函数设置的。 一种选择是拥有两个构造函数,而其他字段为空,即: class Bar { private final String name; private final Distance distance; private final Url url; public Bar(String name, Distance distance){ this.name = name; this.distance = distance; this.url = null; } public Bar(String name, Url url){ this.name = name; this.distance = null; this.url = url; …

5
与Java相比,Ceylon有哪些优势?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 在网上寻找最近​​和功能强大的编程语言时,我遇到了锡兰。我进入了ceylon-lang.org,上面写着: 锡兰深受Java影响。您会看到,我们是Java的粉丝,但是我们知道它的局限性。Ceylon保留了Java的最佳功能,但改进了我们认为烦人,乏味,令人沮丧,难以理解或容易出错的东西。 与Java相比,Ceylon有哪些优势?

3
在将字符串变量与带有.equals()的字符串文字进行比较时,是否存在关于项目顺序的标准做法?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 每个都有好处,我了解其中的区别,但是什么是最佳/标准做法?又为什么呢? 例如 : "myString".equals(myStringVar) 避免潜在的NPE,并且不需要空检查。(好东西?) 读取的更干净,因为不需要空检查。 如果null不是期望值,则您的程序可能会中断而没有任何明智之举。 然而 myStringVar.equals("myString") 如果null为期望值,则需要进行null检查。(好东西?) 可以使用空检查使复合条件变得混乱。 允许NPE通知我们是否发生了故障。 哪个变体被认为是Java使用的标准,为什么?

4
与纯JavaScript框架相比,诸如GWT之类的工具具有哪些公认的优势?
GWT是一个软件堆栈,可将Java代码和Java Runtime类库的子集转换为JavaScript代码。 与JavaScript工具包相比,GWT在本质上和用途上似乎疏远了,并且过于复杂以至于无法完成简单的事情,从而直接使用JavaScript会占用很多细粒度的控件。 为什么Web开发人员会选择使用GWT之类的工具,而不是使用纯JavaScript和JavaScript框架和工具包,而该工具使用的是最初不面向Web的语言? 它可测量地更好,并且基于什么标准?

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.