Questions tagged «java»

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

4
为什么在接口中使用“可选方法”实现Java集合?
在扩展Java集合框架的第一个实现过程中,我很惊讶地看到集合接口包含声明为可选方法的方法。如果不支持,则期望实现者抛出UnsupportedOperationExceptions。这立即让我感到震惊,因为它是糟糕的API设计选择。 在阅读了约书亚·布洛赫(Joshua Bloch)出色的“有效Java”(Effective Java)书之后,后来得知他可能对这些决定负有责任,但似乎并没有遵循书中所遵循的原则。我想声明两个接口:Collection和MutableCollection,它通过“可选”方法扩展Collection,将导致可维护性更高的客户端代码。 还有的问题一个很好的总结在这里。 是否有充分的理由为什么选择了可选方法而不是两个接口实现?

3
这是Mockito的reset方法的适当用法吗?
我的测试类中有一个私有方法,该方法构造一个常用Bar对象。Bar构造函数someMethod()在我的模拟对象中调用方法: private @Mock Foo mockedObject; // My mocked object ... private Bar getBar() { Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod() } 在我的某些测试方法中someMethod,该特定测试也调用了我要检查的方法。类似于以下内容: @Test public void someTest() { Bar bar = getBar(); // do some things verify(mockedObject).someMethod(); // <--- will fail } 这将失败,因为模拟对象已someMethod被调用两次。我不想让我的测试方法关心方法的副作用getBar(),所以在末尾重置模拟对象是否合理getBar()? private Bar getBar() { Bar …
68 java  mocking 

10
当与“ if”和“ while”一起使用时,为什么语言需要在表达式周围加上括号?
如C,Java中,和C ++语言在使用时都需要围绕整个表达式括号if,while或switch。 if (true) { // Do something } 相对于 if true { // Do something } 我觉得这很奇怪,因为括号是多余的。在此示例中,true是一个单独的表达式。括号不会以我所知的任何方式改变其含义。为什么存在这种奇怪的语法?为什么如此常见?我不知道有什么好处吗?

16
程序员在选择语言和框架时应有多少自由度?
我开始在一家主要面向C#的公司工作。我们有些人喜欢Java和JRuby,但是这里的大多数程序员都喜欢C#。我之所以被录用,是因为我有很多构建Web应用程序的经验,并且因为我倾向于JRuby on Rails或nodejs等较新的技术。 我最近开始了一个构建Web应用程序的项目,该项目的重点是在短时间内完成很多工作。软件负责人指示我使用mvc4而不是rails。可能还可以,除了我不知道mvc4,我不懂C#,而且我是唯一负责创建Web应用程序服务器和前端UI的人。 使用我已经非常了解的框架(Rails)而不是使用mvc4有意义吗?该决定背后的原因是,技术负责人不了解Jruby / rails,因此无法重用代码。 相反的论点: 他不会为代码做贡献,坦率地说, 这个项目不需要他。因此,他是否知道JRuby / rails并不重要。 实际上,我们可以重用代码,因为我们有很多Java应用程序,JRuby可以从中提取代码,反之亦然。实际上,他已经投入了一些资源将Java库转换为C#,而不仅仅是在JRuby on Rails应用程序上运行Java库。都是因为他不喜欢Java或JRuby 我已经构建了许多Web应用程序,但是使用一些陌生的东西会引起一些混乱,而我却无法像过去那样在短时间内构建出色的应用程序。这样很好 学习新技术在这一领域很重要。问题是,对于这个项目,我们需要快速完成很多工作。 在什么时候应该允许开发人员选择其工具?这取决于公司吗?我的公司吮吸或认为这正常吗?是否存在绿色牧场?我看错了方向吗?

7
IntelliJ如何比Eclipse更好?[关闭]
我知道有一些问题,例如您最喜欢的编辑器/ IDE是什么?,但是他们都没有回答这个问题:为什么在Eclipse免费的时候花钱在IntelliJ上? 我个人是IntelliJ的忠实粉丝,但我还没有真正尝试过Eclipse。我已经将IntelliJ用于Java,JSP,HTML / CSS,Javascript,PHP和Actionscript等项目,而最新版本9 对所有这些项目都很出色。 过去,许多同事告诉我,他们相信Eclipse与IntelliJ“几乎相同”,但是为了解决这一点,我偶尔会坐在使用Eclipse的开发人员的后面,该开发人员的效率似乎相当低(完成大致相同的操作)任务),而我在IntelliJ中还没有经历过。它们可能逐个功能地相提并论,但是糟糕的用户体验可能会破坏功能,并且我想知道IntelliJ是否有可能更容易获得和发现节省时间的功能。 对于已经熟悉Eclipse的用户,除了IntelliJ的实际成本之外,还有花费时间来学习新应用程序。Eclipse吸引了许多不想在IDE上花费250美元的用户。 如果IntelliJ确实可以帮助我的团队提高生产力,那么我如何将其出售给他们?对于同时尝试过这两种方式的用户,我会对这两种方式的优点或缺点都非常感兴趣。
67 java  ide  eclipse  intellij 


21
“在开始了几年的职业生涯后就不要编程了”。这是一个合理的建议吗?[关闭]
我是一位经验丰富的开发人员,在PHP方面有大约5年的经验,而在Java,C#方面则略少一些,并且现在尝试学习一些Python。自从我作为程序员的职业生涯开始以来,我时不时地被其他程序员告知,编程适合于职业生涯的前几年(大多数人将其视为5年),并且必须在以后改变方向。它。它们出现的原因包括头痛和与编程相关的压力。他们还说,程序员的社交能力较差,通常不愿给家人时间,等等。尤其是“哦,来吧,你不能一辈子编程!” 我在这里有些困惑,需要询问其他人。如果我退出编程,那该怎么办?我认为在这种情况下,教学可能是一个不错的选择,但可能需要首先获得博士学位。也许还值得注意的是,在我国(巴基斯坦),程序员的生活不是很好,因为通常他们必须在办公室里多花2-3个小时来完成紧急编程任务。我认为其他国家和地区的情况也有些相似。 在该领域工作5年后,您认为将职业从编程转变为其他职业是合理的建议吗? 更新 噢,我不知道人们在这一领域可以拥有40多年的经验。看到人们自1971年以来就开始这样做了,我感到既兴奋又惊奇。这意味着我出生前15年!能够与这样经验丰富的人交谈很高兴,我们在巴基斯坦没有这样的机会。 再次感谢您提供的所有帮助和分享。让您对此有所想法,这是一个很好的经历。

6
服务层与DAO -为什么两者同时存在?
我一直在使用Java Web应用程序示例中的SpringMVC,Hibernate和某些数据库。 有几种不同的方法可以执行此操作,但是此Spring 3和hibernate集成教程(带有示例)具有模型类,视图(在jsp中)以及控制器的服务和dao类。 我的问题是,服务类和DAO类是否都做同样的事情?您为什么同时需要它们? 这是我实际使用的教程:http : //fruzenshtein.com/spring-mvc-security-mysql-hibernate/

3
为什么Java 8 java.time类缺少getMillis()方法?
Java 8在java.time包中提供了一个用于日期和时间的全新库,这对于以前必须使用JodaTime或使其成为自己的日期处理助手方法而感到烦恼的人来说,是一件非常受欢迎的事情。该程序包中的许多类都表示时间戳,并具有一些辅助方法,例如getHour()从时间戳获取小时,从时间戳getMinute()获取分钟,从时间戳getNano()获取nano等。 我注意到他们没有一种方法getMillis()来获取时间戳的毫秒数。相反,必须调用method get(ChronoField.MILLI_OF_SECOND)。在我看来,这似乎是图书馆中的矛盾之处。有谁知道为什么缺少这种方法,或者由于Java 8仍在开发中,是否有可能稍后再添加呢? https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html 此处定义的类代表主要的日期时间概念,包括瞬间,持续时间,日期,时间,时区和时间段。它们基于ISO日历系统,这是遵循通用格里高利规则的事实世界日历。所有的类都是不可变的并且是线程安全的。 每个日期时间实例均由API方便提供的字段组成。对于较低级别的字段访问,请参考java.time.temporal软件包。每个类都支持打印和解析各种日期和时间。请参阅java.time.format软件包以获取自定义选项... 此类示例:https : //docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html ISO-8601日历系统中没有时区的日期时间,例如2007-12-03T10:15:30。 LocalDateTime是一个不变的日期时间对象,代表一个日期时间,通常被视为年-月-日-时-分-秒。也可以访问其他日期和时间字段,例如,一年中的某天,一周中的某天和一周中的某周。时间以纳秒精度表示。例如,值“ 2nd October 2007 at 13:45.30.123456789”可以存储在LocalDateTime...中
64 java  java8 

4
不使用JSF的原因[关闭]
我是StackExchange的新手,但我认为您可以为我提供帮助。 我们正在创建一个新的Java Enterprise应用程序,以替换旧版JSP解决方案。由于许多更改,UI和业务逻辑的各个部分将被完全重新考虑和重新实现。 我们首先想到的是JSF,因为它是Java EE中的标准。起初,我印象深刻。但是现在,我正在尝试实现一个功能原型,并且对使用它确实有一些严重的担忧。 首先,它创建了我见过的最糟糕,最混乱的无效伪HTML / CSS / JS混合。它违反了我在网络开发中学到的每一个规则。此外,它把所有东西紧密结合在一起:布局,设计,逻辑和与服务器的通信。我看不到如何舒适地扩展此输出,无论是使用CSS样式,添加UI糖果(例如可配置的热键,拖放小部件)还是其他方法。 其次,它太复杂了。它的复杂性非常出色。如果您问我,这是对基本Web技术的拙劣抽象,最终变得残废无用。我有什么好处?没有,如果您考虑的话。数百个组件?我看到了数以万计的HTML / CSS片段,数万个JavaScript片段以及成千上万个jQuery插件。它解决了很多问题-如果不使用JSF,就不会有。或完全是前控制器模式。 最后,我认为我们将不得不在两年之内重新开始。我看不到如何实现所有第一个GUI模型(此外;我们的团队中没有JSF专家)。也许我们可以以某种方式将其破解。然后会有更多。我确信我们可以破解我们的黑客。但是在某些时候,我们会陷入困境。由于服务层之上的所有内容都由JSF控制。我们将不得不重新开始。 我的建议是使用JAX-RS实现REST api。然后用客户端MVC创建一个HTML5 / Javascript客户端。(或MVC的某种风格。)顺便说一句;无论如何,我们都将需要REST api,因为我们也在开发部分Android前端。 我怀疑JSF是当今最好的解决方案。随着互联网的发展,我真的不明白为什么要使用这种“耙子”。 现在,优点/缺点是什么?我如何强调我不使用JSF的观点?在我的建议下使用JSF有什么优点?

4
是因为我编写不同的东西还是因为编译的方式不同,所以函数编程在多线程中是否更快?
我将深入研究函数式编程的世界,并且不断阅读有关函数式语言更适合多线程/多核程序的内容。我了解函数式语言如何做很多不同的事情,例如递归,随机数等,但是我似乎无法弄清楚函数式语言中的多线程是否更快,因为它的编译方式不同或因为我编写的方式不同。 例如,我已经用Java编写了实现某种协议的程序。在此协议中,双方互相发送和接收数千条消息,它们对这些消息进行加密并一次又一次地重新发送(并接收)。不出所料,当处理成千上万的规模时,多线程是关键。在此程序中,没有锁定。 如果我在Scala(使用JVM)中编写相同的程序,这种实现会更快吗?如果是,为什么?是因为写作风格吗?如果是因为写作风格,现在Java包含了lambda表达式,我不能将Java与lambda一起使用来达到相同的结果吗?还是因为Scala将以不同的方式编译事物而更快?



11
将程序分成多个类为什么很好?[关闭]
我仍然是一名高中学生(正在读10年级),并且还没有在学校学习实际的计算机课程。到目前为止,我所做的一切都是通过书本。这些书教会了我诸如继承的概念,但是将程序分成多个类又有什么帮助呢?这些书从未告诉过我。 我问这个问题主要是因为最近有一个项目。这是一款街机视频游戏,就像有人所说的Flash游戏一样(尽管我不知道Flash游戏是什么)。事实是,这只是一堂课。仅使用一个类,它就可以很好地工作(但是偶尔会有一些滞后)。所以,我只是问如何将其拆分为多个类会有所帮助。 这个项目是用Java编写的,我是唯一从事该项目的人。

7
在设计可测试性时如何处理静态实用程序类
我们正在尝试将我们的系统设计为可测试的,并在大多数零件中使用TDD进行开发。当前,我们正在尝试解决以下问题: 在各个地方,我们有必要使用静态辅助方法,例如ImageIO和URLEncoder(均为标准Java API)以及各种其他主要由静态方法组成的库(例如Apache Commons库)。但是,测试使用此类静态帮助程序类的方法极其困难。 我有一些解决此问题的想法: 使用可以模拟静态类的模拟框架(例如PowerMock)。这可能是最简单的解决方案,但感觉有点像放弃。 围绕所有这些静态实用程序创建实例化包装器类,以便可以将它们注入使用它们的类中。这听起来像是一个相对干净的解决方案,但是我担心我们最终将创建大量这些包装器类。 将对这些静态帮助器类的每个调用提取到一个可以重写的函数中,并测试我实际要测试的类的子类。 但是我一直认为这只是许多人在进行TDD时必须面对的问题-因此必须已经有解决此问题的方法。 使使用这些静态帮助器的类可测试的最佳策略是什么?

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.