Questions tagged «java»

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

5
如果不存在,那么在get中创建某些东西是不好的编码习惯吗?
因此,我有一个Web服务,该服务具有类似的功能getAccount,如果有该服务,它将在帐户中返回标识符,否则将引发异常。如果抛出的异常与获取信息相同,则客户端将始终希望创建一个帐户。 我正在为客户端创建一个便利库,该客户端将处理内部的所有webservice调用,因此他们不需要知道如何自己进行调用。 我想知道的是,如果我要创建一个getAccount(accountName)可以在帐户存在时获取该帐户的帐户,如果不创建该帐户并返回信息,那是一件不好的事情吗?我应该将其留给客户端来处理异常还是将其命名为诸如getOrCreateAccount之类的东西?有关系吗? 在get操作中创建内容是不好的做法吗?

6
是否需要在方法签名中为每个参数编写一个Javadoc注释?
我们团队中的一位开发人员认为,有必要为方法签名中的每个参数编写一个Javadoc注释。我认为这不是必要的,实际上我认为这甚至是有害的。 首先,我认为参数名称应具有描述性和自我记录性。如果您的参数的用途不是很明显,那么您可能做错了。但是,我确实知道,有时不清楚参数的用途,因此在这种情况下,应该编写一个Javadoc注释来解释该参数。 但是我认为没有必要对每个参数执行此操作。如果该参数的作用已经很明显,则javadoc注释是多余的;您只是为自己创造了额外的工作。此外,您还为需要维护代码的任何人创建了额外的工作。方法会随着时间而变化,维护注释几乎与维护代码一样重要。您有多少次看到“ X是Y导致Z原因”这样的注释,只是看到该注释已过时,实际上该方法甚至不再使用X参数?它总是发生,因为人们忘记了更新评论。我认为,误导性评论比根本没有评论更具危害性。因此存在过度注释的危险:通过创建不必要的文档,您可以 但是,我尊重团队中的另一个开发人员,并接受他也许是对的,但我错了。这就是为什么我会向其他开发人员提出您的问题:确实有必要为每个参数编写一个Javadoc注释吗?在此假设该代码是我公司内部的代码,任何外部方都不会使用。

1
DTO代替实体有什么用?
我正在研究RCP应用程序,我是这个应用程序的新手。 Spring bean用于编写业务逻辑来保存/获取实体。 但是,我们不是将实体直接发送给客户端,而是转换为DTO并填充客户端。保存时,我们再次将DTO转换为实体并保存。 这些转换有什么好处?有人可以解释吗?
18 java  spring  entity  map  dto 

7
为什么按原样创建实例?
在过去六个月的时间里,我已经学习了C#,现在正在研究Java。我的问题是关于实例创建(实际上是用两种语言)的问题,而更多的是:我想知道为什么他们这样做了。举个例子 Person Bob = new Person(); 是否有理由两次指定对象?会不会有something_else Bob = new Person()? 如果我遵循惯例,似乎会更像: int XIsAnInt; Person BobIsAPerson; 也许是其中之一: Person() Bob; new Person Bob; new Person() Bob; Bob = new Person(); 我想我很好奇是否有比“这就是完成的方式”更好的答案。

4
在不同项目之间共享类或接口
我一直在寻找SO或此处的一些答案,但是没有任何结果,这就是为什么我要问你。 假设我有两个不同的项目-例如应用程序的服务器部分和客户端部分。我正在开发自己的部分,而我的朋友正在制作第二部分。但是我们两个都应该使用一些通用接口,例如Useror AccountInfo或ChangableAccount...,以确保兼容性。例如,如果客户端将用户数据发送到服务器,则服务器应在同一类上运行。接口等也是如此。此外,如果公共接口中有任何更改,则两个项目都应根据新情况调整其代码。 我现在看到的唯一解决方案是,创建一个额外的项目,在其中定义所有常见的事物。我们和我的朋友应该将此项目添加为对主项目(客户端或服务器)的依赖项。共享项目可以通过某些版本控制系统进行管理,因此我们始终处于最新状态。 您还建议什么其他解决方案?在专业应用中如何解决此类问题?

4
Java-使用多态或有界类型参数
假设我有这个类层次结构... public abstract class Animal { public abstract void eat(); public abstract void talk(); } class Dog extends Animal { @Override public void eat() { } @Override public void talk() { } } class Cat extends Animal { @Override public void eat() { } @Override public void talk() { } …

4
为什么使用接口(例如Map)而不是实现(HashMap)来定义Java对象
在大多数Java代码中,我看到人们这样声明Java对象: Map<String, String> hashMap = new HashMap<>(); List<String> list = new ArrayList<>(); 代替: HashMap<String, String> hashMap = new HashMap<>(); ArrayList<String> list = new ArrayList<>(); 为什么偏爱使用接口而不是实际使用的实现来定义Java对象?

4
为什么Java String没有静态字符串操作方法?
Java设计人员为什么不在类中创建字符串操作方法的静态版本java.lang.String?我指的是以下方法,但是问题也可以扩展到该类中的其他非静态方法。 concat(String) substring(int, int) replace(char, char) toLowerCase() replace(CharSequence, CharSequence) toLowerCase(Locale) replaceAll(String, String) toString() replaceFirst(String, String) toUpperCase() split(String) toUpperCase(Locale) split(String, int) trim() substring(int) 仅使用这些方法的非静态版本会在必须调用此方法的任何地方强制进行显式 null检查。例如,简单的调用example = example.trim()会导致NullPointerException异常如果String example = null。因此,程序员必须执行以下样板空检查: if (example != null) example = example.trim(); // OR: example = (example==null) ? null : example.trim(); example = (example==null) ? null …
17 java  api-design  null 

3
在Java中串联字符串时,在内存中创建了多少个字符串?
有人问我有关Java中的不可变字符串。我的任务是编写一个将多个“ a”连接到一个字符串的函数。 我写的是: public String foo(int n) { String s = ""; for (int i = 0; i < n; i++) { s = s + "a" } return s; } 然后我被问到这个程序将生成多少个字符串,假设不会发生垃圾回收。我对n = 3的想法是 ” “一种” “一种” “ aa” “一种” “啊!” “一种” 在循环的每次迭代中,基本上都会创建2个字符串。但是,答案是n 2。此函数将在内存中创建哪些字符串,为什么呢?
17 java  strings  object 

3
如何测试数据访问层?
我有一个DAO方法,该方法利用Spring进行JDBC访问。它计算出卖家出售商品的成功率。 这是代码: public BigDecimal getSellingSuccessRate(long seller_id) { String sql = "SELECT SUM(IF(sold_price IS NOT NULL, 1, 0))/SUM(1) FROM transaction WHERE seller_id = ?"; Object[] args = {seller_id}; return getJdbcTemplate().queryForObject(sql, args, BigDecimal.class); } 我应该如何使用JUnit测试此方法或任何DAO方法?有哪些最佳实践来测试数据访问逻辑?我正在考虑针对加载了一些数据的可嵌入数据库进行测试,但是就RDBMS和架构而言,我们不应该进行类似于生产环境的集成测试吗?


3
国家模式是否违反《里斯科夫替代原则》?
该图像取自“ 应用域驱动的设计和模式:带有C#和.NET中的示例” 这是状态模式的类图,其中a SalesOrder在生命周期内可以具有不同的状态。在不同状态之间仅允许某些转换。 现在,OrderState该类是一个abstract类,并且其所有方法都继承为其子类。如果我们将子类视为Cancelled最终状态,不允许将其转换为其他任何状态,则必须对override此类中的所有方法进行抛出。 现在,这不是违反Liskov的替代原则吗,因为sublcass不应改变父级的行为吗?将抽象类更改为接口是否可以解决此问题? 如何解决?

3
Scala中未经检查的异常的决定
作为一名Java程序员,我一直对Unchecked Exception持批评态度。通常,程序员使用它作为编码简便性的途径,只会在以后造成麻烦。此外,与未检查的对等程序相比,具有检查的异常的程序(尽管不整洁)非常健壮。 令人惊讶的是,在Scala中,没有什么叫做“检查的异常”。Scala中所有未选中和未选中的Java都未选中。 做出此决定的动机是什么?对我来说,在使用任何外部代码时都会遇到很多问题。并且,如果偶然地文档很差,则将导致KILL。

5
我是否需要了解servlet和JSP才能学习Spring或Hibernate或任何其他Java Web框架?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 我一直在问很多人从哪里开始学习Java Web开发,我已经知道核心Java(线程,泛型,集合,对(JDBC)有一点经验),但是我不知道JSP和Servlet。我使用服务器端使用PHP以及客户端使用HTML,CSS,Javascript和HTML5的几个基于Web的应用程序完成了我的开发工作。 我要求的大多数人都告诉我立即进入Hibernate,而有些人则告诉我不需要学习servlet和jsps,我应该立即学习Spring框架。这是真的?我不需要学习servlet和JSP来学习休眠或Spring吗? 他们所有的答案使我感到困惑,现在我完全失去了学习或学习的知识。我觉得如果我不学习JSP和servlet,就会错过很多重要的概念,这些概念将来肯定会对我有帮助。 因此,问题是,我是否需要具有基础/知识servlet和JSP才能学习spring或hibernate或任何其他Java web框架。

5
为什么Python比Java慢但比PHP快[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我已经多次看过各种基准测试,这些基准测试表明一堆语言如何执行给定任务。 这些基准测试始终表明Python比Java慢,比PHP快,我不知道为什么会这样。 Java,Python和PHP在虚拟机中运行 所有这三种语言都将其程序转换为可在操作系统之上运行的自定义字节码-因此,没有一种语言可在本地运行 Java和Python都可以“编译”(.pyc对于Python),但Python的__main__模块未编译 Python和PHP是动态类型的,而Java是静态类型的-这就是Java速度更快的原因,如果是,请说明这如何影响速度。 而且,即使dynamic-vs-static参数正确,也不能解释为什么PHP比Python慢​​-因为两者都是动态语言。 你可以看到一些基准这里和这里,并在这里

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.