Questions tagged «java»

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

3
我的值检查器函数需要同时返回布尔值和消息
我有一个值检查功能,类似于信用卡号检查功能,它以字符串形式传递,并且需要检查该值的格式正确。 如果格式正确,则需要返回true。 如果格式不正确,则需要返回false,并告诉我们该值出了什么问题。 问题是,实现此目标的最佳方法是什么? 以下是一些解决方案: 1.使用整数/枚举返回码表示含义: String[] returnCodeLookup = [ "Value contains wrong number of characters, should contain 10 characters", "Value should end with 1", "Value should be a multiple of 3" ] private int valueChecker(String value) { /*check value*/ return returnCode; } rc = checkValue(valueToBeChecked); if rc == 0 …

3
创建对象时,是将新的内存分配给实例字段和方法,还是仅分配给实例字段
我有一个下课 class Student{ int rollNumber; int marks; public void setResult(int rollNumber, int marks){ this.rollNumber=rollNumber; this.marks=marks; } public void displayResult(){ System.out.println("Roll Number= "+this.rollNumber+" Marks= "+this.marks); } } 现在,我创建两个类型为Student的对象,如下所示 Student s1=new Student(); Student s2=new Student(); 现在,为实例字段分配了两组不同的内存。现在我的问题是为方法(setResult和displayResult)分配内存两次还是一次? 请参见下图,您能帮我说一下哪个图提供了正确的信息。

2
为什么C#比Java具有更多的功能?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 请注意,这并不意味着是Java vs. C#参数。我是一位没有C#经验的Java程序员,出于好奇而问。 我在C#上做了一些阅读,似乎它比Java具有更多的功能。一些例子: 类型推断。 dynamic 关键词。 代表们 可选参数。 Lambda和LINQ (我实际上不知道它们是什么)。 属性。 但是,Java实际上没有C#所没有的任何功能。 我的问题是:为什么C#比Java具有更多的本机功能?为何Java多年来一直没有添加其中的某些内容,例如Properties或type Inference?Java语言设计人员是否采用更简单的方法?这是什么原因呢?
14 java  c#  languages 

6
嵌套try-catches的替代方案,用于后备
我遇到试图检索对象的情况。如果查找失败,则我有多个后备,每一个都可能失败。因此,代码如下所示: try { return repository.getElement(x); } catch (NotFoundException e) { try { return repository.getSimilarElement(x); } catch (NotFoundException e1) { try { return repository.getParentElement(x); } catch (NotFoundException e2) { //can't recover throw new IllegalArgumentException(e); } } } 这看起来很难看。我讨厌返回null,但是在这种情况下会更好吗? Element e = return repository.getElement(x); if (e == null) { e = repository.getSimilarElement(x); …

5
最终价格昂贵
对于在退出函数之前必须进行资源清理的代码,这两种执行方法之间在性能上存在重大差异。 在每个return语句之前清理资源 void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); } 最终清除资源 void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == …

7
在Java中,为什么使受保护成员可以访问同一包的类?
从官方文件 ... 修饰符类包子类世界 公开YYYY 受保护的YYYN 没有修饰符YYNN 私人YNNN 问题是,我不记得有一个用例,在该用例中,我需要从同一包中的类访问受保护的成员。 执行此操作的原因是什么? 编辑:为澄清起见,我正在寻找一个特定的用例,其中同一包中的子类和类都需要访问受保护的字段或方法。 package some.package; public class A { protected void protectedMethod(){ // do something } } package another.package; public class B extends A{ public void someMethod(){ // accessible because B is a subclass of A protectedMethod(); } } package some.package; public class …

1
Java版本之间的差异摘要?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 2年前关闭。 这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 在软件开发方面,Java版本之间的主要区别是什么?在哪里可以找到与编程相关的最重要变化的摘要? 诸如http://www.oracle.com/technetwork/java/javase/releasenotes-136954.html之类的发行说明可能很难阅读。 例如,Java 1.5中有一个“针对每个”的新代码结构。
14 java  versioning 

3
使用策略模式的Java通用文件解析器设计
我正在开发一种产品,其中一个模块的职责是解析XML文件并将所需内容转储到数据库中。即使目前的要求只是解析XML文件,我仍希望以一种将来可以支持任何类型文件的方式设计解析模块。采用这种方法的原因是,我们正在为特定客户生产该产品,但计划在不久的将来将其出售给其他客户。当前客户端的生态系统中的所有系统都会生成和使用XML文件,但其他客户端可能并非如此。 到目前为止,我尝试了什么?(现在) 我想到的是基于策略模式的以下设计。我很快就用eclipse编写了代码以传达我的设计,因此,如果暂时忽略其他方面(如正确的异常处理方式),那将是很好的选择。 Parser:公开解析方法的策略接口。 public interface Parser<T> { public T parse(String inputFile); } *使用泛型参数的原因是允许任何返回类型以及在编译时确保类型安全。 ProductDataXmlParser一个具体类,用于解析包含产品相关信息的product.xml文件。(使用XMLBeans) public class ProductDataXmlParser implements Parser<ProductDataTYPE> { public ProductDataTYPE parse(String inputFile) { ProductDataTYPE productDataDoc = null; File inputXMLFile = new File(inputFile); try { productDataDoc = ProductDataDocument.Factory.parse(inputXMLFile); } catch(XmlException e) { System.out.println("XmlException while parsing file : "+inputXMLFile); …
14 java  design  parsing  xml 

1
在生产环境中运行哪个Java版本的注意事项
有些人掌握了技术的最前沿-更新某些事物的日期。在生产中,这不合适。 研究当前版本(Java 7)是否准备好投入生产会产生大量旧材料,这些旧材料可能不再正确(在撰写本文时,Java 7已经使用了一年半的时间,这似乎已经很长了) 。 为了确定将生产环境升级到更高版本的Java是否合适,我需要考虑哪些因素?

3
我应该直接实现接口还是让超类来实现?
两者之间有区别吗 public class A extends AbstractB implements C {...} 与... public class A extends AbstractB {...} abstract class AbstractB implements C {...} 我知道在两种情况下,类A最终都将符合该接口。在第二种情况下,AbstractB可以在中提供接口方法的实现C。那是唯一的区别吗? 如果我不想提供任何的接口方法的实现 AbstractB,我应该使用哪种风格?使用一个或另一个具有隐藏的“文档”目的吗?

3
用Java枚举实现单例的缺点是什么?
传统上,单例通常实现为 public class Foo1 { private static final Foo1 INSTANCE = new Foo1(); public static Foo1 getInstance(){ return INSTANCE; } private Foo1(){} public void doo(){ ... } } 使用Java的枚举,我们可以实现单例为 public enum Foo2 { INSTANCE; public void doo(){ ... } } 与第二版一样出色,它有什么缺点吗? (我考虑了一下,我会回答我自己的问题;希望您有更好的答案)
14 java  singleton  enum 

2
为什么使用C ++库如此复杂?
首先,我想指出的是,我热爱C ++,并且我是认为C ++比Java编写容易的人之一。除了一件小事:库。 在Java中,您只需将一些jar添加到构建路径即可。 在C ++中,通常必须为头文件和库本身设置多个路径。在某些情况下,您甚至必须使用特殊的构建标志。我主要使用Visual Studio,代码块,而根本没有使用IDE。在谈论使用外部库时,所有这三个选项没有太大差异。 我不知道为什么没有比这更简单的选择了?就像拥有一个特殊的.zip文件一样,它可以将您需要的所有东西都放在一个地方,因此IDE可以为您设置构建标志进行所有工作。有没有技术上的障碍?
14 java  c++  libraries 

5
确保类的唯一实例的方法?
想要改善这篇文章吗?提供此问题的详细答案,包括引文和为什么您的答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我正在寻找不同的方法来确保给定类的每个实例都是唯一可识别的实例。 例如,我有一个Name带field 的课name。一旦我有一个初始化为John Smith 的Name对象,name我就不想再实例化一个Name名称为John Smith的对象,或者如果实例化发生了,我希望将对原始对象的引用传递回去比一个新的对象。 我知道这样做的一种方法是让一个静态工厂保存Map所有当前的Name对象,并且该工厂在将引用返回给a之前检查是否存在以John Smith为名称的对象。Name宾语。 我可以想到的另一种方法是在Name类中具有一个静态Map,并且当传入的for name值已经在另一个对象中使用时,在调用构造函数时引发异常,但是我知道抛出异常在构造函数中通常是个坏主意。 还有其他方法可以做到这一点吗?

9
如何拆分紧密联系的大型课程?
我有一些巨大的类,它们包含超过2k行代码(并且还在不断增长),如果可能的话,我希望对其进行重构,以实现更加轻巧和简洁的设计。 它之所以如此之大,主要是因为这些类处理大多数方法都需要访问的一组映射,并且方法之间相互联系紧密。 我将举一个非常具体的示例:我有一个名为的类Server来处理传入消息。它有类似的方法joinChatroom,searchUsers,sendPrivateMessage等所有这些方法操纵映射,如users,chatrooms,servers,... 如果我可以有一个类来处理有关Chatrooms的消息,另一个可以处理所有有关Users的消息,等等,这也许会很好,但是这里的主要问题是我需要在大多数方法中使用所有地图。因此,Server由于它们都依赖于这些通用映射,并且方法之间相互联系紧密,因此它们现在都属于该类。 我需要创建一个类Chatrooms,但要引用其他每个对象。类的用户再次引用所有其他对象,等等。 我觉得我做错了什么。

5
Java中未定义的行为
我在SO上阅读了这个问题,讨论了C ++中一些常见的未定义行为,我想知道:Java是否也具有未定义的行为? 如果是这样,那么Java中未定义行为的一些常见原因是什么? 如果不是,那么Java的哪些功能使其摆脱了此类行为,为什么没有使用这些属性实现最新版本的C和C ++?

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.