Questions tagged «java»

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

8
学习makefile有多重要?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我主要是在业余爱好中从事C ++工作(我还在上学,因此没有一份真正的工作)。IDE为我生成了makefile,所以我想知道是否值得学习如何自己制作它们。我的意思是“值得学习”,我应该在继续学习c ++之前放弃所有东西并学习如何编写它们吗?学习它们真的很有必要吗?如果是这样,我应该了解它们(常规语法和理解它们的工作原理等)还是真正学习如何编写它们?
12 java  learning  c++  syntax  make 

3
有没有像Head First系列这样教的算法书?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 作为Java程序员,我需要学习算法(用于编程挑战)。我读了一些Head First Series(我拥有的JAVA),他们对大脑很友好。因此,我想知道是否有任何一本简单易懂的算法书籍,并且涉及每个算法的症结所在。
12 java  books  algorithms 

2
Java为什么不对基元使用基数排序?
java.util.Arrays.sort(/* int[], char[], short[], byte[], boolean[] */) 被实现为“优化的快速排序”,而不是基数排序。 我前一阵子做了速度比较,使用n> 10000之类的东西,基数排序总是更快。为什么?
12 java  sorting 

2
是否首选Spring + Hibernate而不是EJB 3?
我的感觉是,每当新的JEE项目开始(适用这些技术的地方)时,人们就会喜欢使用Spring + Hibernate的组合而不是EJB 3。 似乎甚至建议初级程序员而不是EJB。 这是个人喜好还是有相关原因?(例如,由早期EJB版本造成的个人伤痕导致对EJB的不信任或技术膨胀与性能原因或学习曲线有关)?

8
团队内部冲突的Java样式
我是Java开发团队的一员,截止日期为6周。这需要非常非常快地编写大量代码。但是,我们的开发团队具有不同的编码风格。从名称约定到抽象方法的所有内容在我们的团队中都不同。有人知道任何指示Java“标准”的文件吗? 为了澄清,我想知道是否有一个组织会规定例如变量和函数的正确命名约定。这是至关重要的,因为在如此短的期限内,我们不能花时间尝试理解彼此的代码。

10
如何在Java中将类标记为正在开发中
我正在实习项目,但是我必须离开后才能完成所有工作。 我有1个类别不够稳定,无法用于生产。我想标记/标记该类,以便其他人不会在生产中意外使用它。我已经在Javadoc中发出了通知,但这似乎还不够。一些编译器错误或警告会更好。 代码的组织方式如下: [Package] | company.foo.bar.myproject |-- Class1.java |-- Class2.java |-- Class3.java <--(not stable) 如果只有一个工厂类以公共方法调用这些类,则可以将方法设置为class3as private。但是,API不会以这种方式公开。用户将直接使用这些类,例如new Class1();,但是我不能将顶级类设为私有。处理这种情况的最佳做法是什么?
12 java 

8
面向对象的类设计
我想知道好的面向对象的类设计。特别是,我很难在以下两个选项之间做出选择: 静态与实例方法 没有参数或返回值的方法 vs 有参数和返回值的方法 重叠与独特的方法功能 私人与公共方法 范例1: 此实现使用实例方法,没有返回值或参数,没有重叠的功能,并且所有方法都是公共的 XmlReader reader = new XmlReader(url); reader.openUrl(); reader.readXml(); Document result = reader.getDocument(); 范例2: 此实现使用静态方法,返回值和参数,功能重叠和私有方法 Document result = XmlReader.readXml(url); 在示例一中,所有方法都是公共实例,这使得它们易于进行单元测试。尽管所有方法都不同,但readXml()依赖于openUrl(),因为必须首先调用openUrl()。所有数据都在实例字段中声明,因此,除了构造函数和访问器之外,任何方法都没有返回值或参数。 在示例二中,只有一种方法是公共的,其余的是私有静态的,这使得它们很难进行单元测试。方法是重叠的,因为readXml()调用openUrl()。没有字段,所有数据均作为方法中的参数传递,并且结果立即返回。 我应该遵循什么原则来进行正确的面向对象编程?

3
是对Joshua Bloch的Builder设计模式的改进吗?
早在2007年,我读了一篇关于Joshua Blochs的文章,介绍“构建器模式”,以及如何对其进行修改以改善对构造函数和setter的过度使用,尤其是当对象具有大量属性(其中大多数是可选属性)时。这种设计模式的简要总结articled 这里。 我喜欢这个主意,从那以后一直在使用。它的问题,尽管从客户的角度来看非常干净而且易于使用,但是实现它可能是一件痛苦的事!对象中有许多不同的地方引用了单个属性,因此创建对象和添加新属性要花费大量时间。 所以...我有个主意。首先,使用约书亚布洛赫(Joshua Bloch)风格的示例对象: Josh Bloch风格: public class OptionsJoshBlochStyle { private final String option1; private final int option2; // ...other options here <<<< public String getOption1() { return option1; } public int getOption2() { return option2; } public static class Builder { private String option1; private int option2; …

5
为什么Windows Forms / Swing框架偏爱继承而不是Composition?
今天,我的一位教授评论说,他发现奇怪的是,尽管SWT的哲学是通过合成来进行自己的控制,但Swing似乎更喜欢继承。 我几乎没有接触过这两个框架,但是从我记得在C#的Windows窗体中,通常可以扩展控件,就像Swing一样。 既然人们通常倾向于使用合成而不是继承,那么Swing / Windows Forms的人们为什么不偏爱使用合成而不是继承?
12 c#  java  swing  forms 

4
您如何看待不是真正的ORM的新Java持久性工具?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 Java的持久性 在过去的几年中,我使用EJB 2.0,Hibernate,JPA和自家的概念,在Java持久性抽象领域积累了经验。在我看来,他们的学习曲线陡峭且复杂。另外,作为SQL的忠实拥护者,我还认为许多抽象模型都提供了过多的SQL抽象,从而创建了诸如“标准”,“谓词”,“限制”之类的概念,这些概念是非常好的概念,但对SQL却不是。 Java中的持久性抽象的一般思想似乎是基于对象关系模型的,其中RDBMS以某种方式与OO世界相匹配。ORM辩论一直以来都是一种激动人心的辩论,因为似乎没有一个适合所有人的解决方案-甚至可以存在这样一种解决方案。 OO 我个人对避免ORM相关问题的偏爱是坚持关系世界。现在,数据模型范式的选择不应成为讨论的话题,因为它是个人喜好,或者是哪种数据模型最适合具体问题。我想开始的讨论围绕着我自己的持久性工具jOOQ进行。我设计了jOOQ,以提供现代持久性工具具有的大多数优势: 基于SQL的领域特定语言 源代码生成将基础数据库模式映射到Java 支持许多RDBMS 添加一些现代持久性工具所没有的功能(如果我错了,请纠正我): 支持复杂的SQL-联合,嵌套选择,自联接,别名,case子句,算术表达式 支持非标准SQL-存储过程,UDT,ENUMS,本机函数,分析函数 请查看文档页面以获取更多详细信息:http : //www.jooq.org/learn.php。您将看到在Linq中为C#实现了非常相似的方法,尽管Linq并非专门为SQL设计的。 问题 现在,说了我是SQL的忠实拥护者,我想知道是否其他开发人员也会分享我对jOOQ(或Linq)的热情。这种持久性抽象方法是否可行?您可能会看到哪些优点/缺点?我如何改善jOOQ,您认为有什么缺失?从概念上或实践上我哪里出了问题? 批判但建设性的答案表示赞赏 我知道这场辩论是一场感性的辩论。有许多很棒的工具已经在做类似的事情。根据您自己的经验或您可能已阅读的文章,我感兴趣的是至关重要但具有建设性的反馈。
12 java  orm  database  linq 

6
Eclipse中Java的顶级开发人员生产力工具/插件是什么?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我个人使用Visual Studio 2010中的CodeRush进行重构,使用模板编写代码的速度更快,并且通常浏览我的代码的速度比普通VS快10倍。最近,我一直在开发另一个Android应用程序,并开始思考... Eclipse的顶级生产力插件是什么? 最好是免费的。我正在寻找可以用Java而不是PHP或Rails或Eclipse支持的任何其他语言编写的插件。

2
面向Java初学者的RESTful服务的结构
就Java Web开发技能而言,我相对较新。我有一个项目,根据我对API的了解,我认为该项目可以很好地成为RESTful服务的候选人。我正在尝试了解应该如何构造的详细信息,但在谷歌搜索和阅读已有资料方面并没有真正涉足。我希望根据我对该主题的知识和假设,这篇文章能够带来一些验证和/或重定向。 我目前的假设是我的RESTful服务将具有以下结构: 数据库数据(SQL)。 一个ORM(我使用的是相对不受欢迎的ORM,称为CPO,但是对于大多数人来说,它只会被Hibernate取代)。 一个Java管理器类,其方法与ORM进行对话以获得数据 一个Java控制器类,用于处理请求映射,并用于@ResponseBody通过HTTP谓词来指导/处理URL和如何处理数据的动作(http://mysite.com/computers/dell可能GET带有单词“ dell”的请求URL中的参数是一个参数,该参数将返回有关Dell计算机的信息的JSON数组)。 该服务应使用Spring Boot进行,或者以某种方式能够独立存在并且独立于任何其他应用程序。 现在假设以上内容是正确的,那么我将(在非常基本的水平上)拥有一个RESTful服务,任何应用程序都可以使用该服务来使用和使用数据。 所以说我有了我的Web应用程序。假设我正在制作一个有关计算机硬件信息的Web应用程序,而我正在使用Spring来构建此Web应用程序。这是我的假设: 作为JSP,我会有很多看法,而这些JSP包含HTML,CSS和JavaScript。JavaScript将根据需要处理对此应用程序控制器的AJAX调用(如下)。 该Web应用程序还将拥有自己的控制器来处理应用程序的URL请求和路由,然后该控制器将使用该ModelAndView对象或类似的东西与RESTful服务的控制器“对话”,获取正在传递的任何数据,然后将该数据传递回视图(JavaScript,JSP等)进行显示。 我在这里吗?我知道RESTful服务也有一个身份验证方面,但是从概念上讲我还不存在(我的项目将在专用网络中使用,因此此时安全性不是优先事项)。 非常感谢任何见解,批评,知识,反馈或澄清。

2
我应该对子类还是抽象父类进行单元测试?
我有一个简单的实现,如Effective Java的第18项(此处扩展了讨论)。它是一个抽象类,提供2个公共方法methodA()和methodB(),这些方法调用子类方法来“填补我无法以抽象方式定义的空白”。 我首先通过创建一个具体的类并为其编写单元测试来开发它。当第二个类到来时,我能够提取常见的行为,在第二个类中实现“缺失的差距”,并且已经准备就绪(当然,单元测试是为第二个子类创建的)。 时光流逝,现在我有4个子类,每个子类实现3个受保护的短方法,这些方法非常具体地针对其具体实现,而骨架实现则完成所有常规工作。 我的问题是,当我创建一个新的实现时,我会重新编写测试: 子类是否调用给定的必需方法? 给定的方法是否具有给定的注释? 从方法A中可以获得预期的结果吗? 从方法B中可以获得预期的结果吗? 虽然看到了这种方法的优点: 它通过测试记录了子类需求 如果重构有问题,它可能会很快失败 对子类进行整体测试,并通过其公共API进行测试(“ methodA()是否起作用?”而不是“此受保护的方法起作用吗?”) 我的问题是对新子类的测试基本上是理所当然的:-这些测试在所有子类中都相同,它们只是更改方法的返回类型(最基本的实现是通用的)和属性I检查测试的断言部分。-通常,子类没有针对其的测试 我喜欢测试集中于子类本身的结果并防止其重构的方式,但是实施测试只是“手动工作”,这一事实使我觉得我做错了。 测试类层次结构时,此问题常见吗?我该如何避免呢? ps:我考虑过测试骨架类,但是创建一个抽象类的模拟对象以进行测试也很奇怪。而且我认为,对抽象类进行的任何重构会改变子类所不期望的行为,因此不会很快被注意到。我的胆量告诉我,“整体”测试子类是这里的首选方法,但是请随时告诉我我错了:) ps2:我已经在Google上搜索了,发现了许多与此主题有关的问题。其中之一是这样的一个具有很大的答案从奈杰尔·索恩,我的情况下,将他的“1号。” 那太好了,但是我现在不能重构,所以我不得不忍受这个问题。如果我可以重构,我会将每个子类都作为一种策略。可以,但是我仍然会测试“主类”并测试策略,但是我不会注意到任何重构会破坏主类和策略之间的集成。 ps3:我找到了一些答案,说测试抽象类“可以接受”。我同意这是可以接受的,但是我想知道在这种情况下哪种方法更可取(我仍然从单元测试开始)

1
Java 8:在API中传递流以进行惰性操作的良好实践?
在像Guava这样的Java 8之前的lambda繁重库中,输出使用通用的Java Collection Framework接口,因此很容易将它们传递给外部/内部API,并且如果库方法做到了,则仍然可以利用一些惰性计算(例如lazy filter()和transform())。 但是,在Java 8 Streams中,获取Collection/ 的调用Map是终端(即渴望),并且还将分配新的数据结构来保存结果。 对于中间具有多个阶段和策略模式的复杂计算,由于中间结果,这会导致很多不必要的分配。 因此,人们是否认为采用内部API(即策略模式策略)并返回Streams 是一个好习惯,还是我应该退后到懒惰的Guava API而不精简(我想是双关语)? 编辑: 我主要关心的Stream是它只能被消费一次并传递Supplier<Stream<X>>看起来非常笨拙的东西。它几乎迫使您只通过a Collection然后重新stream()通过(并为此付出了急切的评估费用)。
12 java  lambda 

2
Java中未初始化的对象变量和初始化为null的对象变量有什么区别
我有以下两个对象变量 Date a; Date b=null; 绝对“ a”和“ b”都没有引用任何对象。 现在,如果我调用以下语句 System.out.println(a.toString()); 会有编译时错误,但是如果我调用以下语句 System.out.println(b.toString()); 不会有编译时错误,但会存在运行时错误。这是什么原因,什么值将实际存储在“ b”中以表示空值?
12 java 

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.