Questions tagged «java»

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

6
正在创建您认为需要在TDD中进行第一次测试的对象
我对TDD相当陌生,在创建任何测试代码之前的第一个测试时遇到了麻烦。在没有任何实现代码框架的情况下,我可以随意编写我的第一个测试,但是它似乎总是被我的Java / OO问题思考方式所困扰。 例如,在我的Github ConwaysGameOfLifeExample中,我编写的第一个测试(rule1_zeroNeighbours)首先创建了一个尚未实现的GameOfLife对象。称为不存在的set方法,不存在的step方法,不存在的get方法,然后使用断言。 随着我编写了更多测试并进行了重构,这些测试也在不断发展,但最初看起来是这样的: @Test public void rule1_zeroNeighbours() { GameOfLife gameOfLife = new GameOfLife(); gameOfLife.set(1, 1, true); gameOfLife.step(); assertEquals(false, gameOfLife.get(1, 1)); } 当我根据在早期阶段决定编写此第一项测试的方式来强制实施设计时,这感觉很奇怪。 以您理解TDD的方式可以吗?我似乎遵循TDD / XP的原则,因为我的测试和实现随着时间的推移随着重构的发展而发展,因此,如果这种最初的设计被证明是无用的,那就可以改变了,但是感觉就像我在向开发者强加一个方向。通过这种方式解决。 人们还如何使用TDD?我可以从没有GameOfLife对象开始,而只有原语和静态方法开始,进行更多的重构迭代,但这似乎太虚构了。

3
我应该使用哪种Java版本的桌面应用程序吸引最多的用户?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我是否可以假设大多数最终用户使用的版本都比Java 8老?由于我不想强迫人们升级以使用我的应用程序,因此我是否应该计划从一开始就使用Java 7甚至6,即使这意味着我不能自己使用较新版本的好处作为开发者?

2
Java有JVM,C有什么?
我知道C具有编译器,但是决定执行性能的是什么? 例如,在一个if else块中,如果代码仅包含所有ifs而不是if elses,怎么确定所有ifs将被运行?在Java中将是JVM,但在C中,执行编译器是什么?
15 java  c 

2
驯服“实用功能”类
在我们的Java代码库中,我不断看到以下模式: /** This is a stateless utility class that groups useful foo-related operations, often with side effects. */ public class FooUtil { public int foo(...) {...} public void bar(...) {...} } /** This class does applied foo-related things. */ class FooSomething { int DoBusinessWithFoo(FooUtil fooUtil, ...) { if (fooUtil.foo(...)) fooUtil.bar(...); …

4
仅出于更好的可读性而将集合包装在一个简单的类中是否为时过早?
我有以下地图: Map<Double, List<SoundEvent>> soundEventCells = new HashMap<Double, List<SoundEvent>>(); 这HashMap会将double值(它们是时间点)映射到相应的SoundEvent“单元格”:每个“单元格”可以包含多个SoundEvent。这就是为什么将其实现为的原因List<SoundEvent>,因为这正是它的本质。 为了提高代码的可读性,我考虑过实现一个非常简单的静态内部类,如下所示: private static class SoundEventCell { private List<SoundEvent> soundEvents = new ArrayList<SoundEvent>(); public void addEvent(SoundEvent event){ soundEvents.add(event); } public int getSize(){ return soundEvents.size(); } public SoundEvent getEvent(int index){ return soundEvents.get(index); } // .. remove() method unneeded } 并且比地图声明(以及许多其他代码)看起来更好,例如: Map<Double, SoundEventCell> soundEventCells …

1
Java应用程序结构:水平拆分与垂直拆分
对于大型Java应用程序的启动项目结构(使用Maven / Eclipse)有一些争论。 选项1: entities (i.e. the whole database using Hibernate classes-first) services (i.e. sets of read/write operations on the entities) app (perhaps split up more further down the line) 选项2: area1-entities area1-services area1-app area2-entities area2-services area2-app ... (where area1, area2 etc. are functional areas of the system) 选项2显然将导致产生更多的Maven项目/模块,这意味着将生成数据库的类分布在多个项目中。谁能建议每种方法的利弊?

2
实体到DTO的使用
一直在尝试提出基本的分层Web应用程序的流程,并一直在线阅读有冲突的信息。我想弄清楚的是,通过使用某种映射器,仍然可以从DAO到Service层继续使用DTO对象是否有优势。 我预见的基本流程如下: UI模型/表单->控制器 控制器将模型转换为域对象(实体) 域对象->服务层 域对象-> DAO DAO->域对象 服务-> UI UI将Domain转换为UI模型 如果遵循DTO,则DAO将回传DTO,而不是实体。经过一番阅读后,由于(至少在Java中)实体已成为带注释的POJO,因此DTO似乎已经失效,这意味着它们的内存占用量已经很小。 是这种情况,还是应该使用DTO将域对象完全封装在DAO层中?如果是这种情况,服务层将如何传递给DAO? 谢谢一群!
15 java  entity  jpa 

5
Java(Android)中多重继承的正确解决方法
我有一个概念上的问题,即代码的正确实现似乎需要多重继承,在许多OO语言中这不是问题,但是由于该项目是针对Android的,所以没有诸如multi之类的东西extends。 我有一堆的活动,从不同的基类,如简单的衍生Activity,TabActivity,ListActivity,ExpandableListActivity,等。此外我有我需要的地方变成一些代码片段onStart,onStop,onSaveInstanceState,onRestoreInstanceState和其他标准的事件中的所有活动处理器。 如果所有活动只有一个基类,则可以将代码放入一个特殊的中间派生类中,然后创建将其扩展的所有活动。不幸的是,事实并非如此,因为存在多个基类。但是,将代码的相同部分放入几个中间类并不是一种方法,恕我直言。 另一种方法可以是创建一个助手对象,并将上述事件的所有调用委托给助手。但这要求包括辅助对象,并在所有中间类中重新定义所有处理程序。因此,这里的第一种方法没有太大区别-仍然有很多代码重复。 如果在Windows下发生类似情况,我将继承基类(与ActivityAndroid中的类“相对应”的基类),并在那里(在一个地方)捕获适当的消息。 为此,在Java / Android中可以做什么?我知道有一些有趣的工具,例如Java工具(带有一些真实的示例),但是我不是Java专家,所以不确定在这种情况下是否值得尝试。 如果我错过了其他一些不错的解决方案,请提及它们。 更新: 对于那些可能对解决Android中的相同问题感兴趣的人,我发现了一个简单的解决方法。存在Application类,该类除其他外提供接口ActivityLifecycleCallbacks。它正是我所需要的,它使我们能够拦截所有活动的重要事件并为其添加一些价值。此方法的唯一缺点是,它从API级别14开始就可用,这在许多情况下还远远不够(目前对API级别10的支持已成为典型要求)。

5
一种从方法返回多个返回值的方法:将方法放入表示返回值的类中。这是一个好的设计吗?
我需要从一个方法返回2个值。我的方法如下: 创建一个具有2个字段的内部类,这些字段将用于保留这2个值 将方法放在该类中 实例化该类并调用该方法。 该方法中唯一要更改的是,最后它将为实例的字段分配这两个值。然后,我可以通过引用该对象的字段来解决这些值。 这是一个好的设计,为什么?

1
Java密码学扩展
有人告诉我,为了在我的Java应用程序中支持AES256加密,我需要具有无限强度管辖权策略文件的JCE。 我从Oracle下载此文件并解压缩后,仅看到2个JAR: local_policy.jar; 和 US_export_polic.jar 我只想确认我在这里什么都不丢失!我的理解(在阅读完之后README.txt)是,我只是将这两个放在我的<JAVA_HOME>/lib/security/目录中并且应该安装它们。 用这些JAR的名称,我必须假定它不是不能处理AES256的Java Crypto API,但这实际上是一个法律问题,也许吗?并且这两个JAR基本上告诉JRE:“ 是的,运行此级别的加密(AES256)在法律上是可以接受的。 ”我是正确的还是偏离基准的?

3
如何用Java设计高度可扩展的Web服务?
我正在创建一些具有2000个并发用户的Web服务。该服务是免费提供的,因此有望获得大量用户。将来可能需要扩展到50,000个用户。 已经有一些其他问题可以解决此问题,例如 -/programming/2567254/building-highly-scalable-web-services 但是,我的要求与上述问题有所不同。 例如-我的应用程序没有用户界面,因此图像,CSS,javascript不是问题。它是用Java编写的,因此使用HipHop将PHP转换为本地代码的建议毫无用处。 因此,我决定单独询问我的问题。 这是我的项目设置- 使用Apache CXF的基于Rest的Web服务 Hibernate 3.0(具有相关的优化功能,例如延迟加载和自定义HQL以进行优化) Tomcat 6.0 MySQL 5.5 为了使基于Java的应用程序可扩展,应遵循哪些最佳实践?

4
接近Java / JVM内部结构[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我已经用Java编程了大约8年,作为一名开发人员,我对该语言非常了解,但是我的目标是加深我对内部语言的了解。我上过PL设计的本科课程,但它们是非常广泛的学术概览(在Scheme,IIRC中)。 有人可以建议一条路线来开始研究细节吗?具体来说,是否有一些特定的主题(例如垃圾回收)更容易解决或成为一个好的起点?是否有关于JVM内部和Java编程语言设计的不错的高级书籍?我当前的方法是从JVM规范开始,并根据需要进行研究。
15 java  books  jvm 

2
如果我们序列化和反序列化两个互相引用的对象会发生什么?
为了更加清楚,这是一个简单的示例: class A implements Serializable { public B b; } class B implements Serializable { public A a; } A a = new A(); B b = new B(); a.b = b; b.a = a; 那么,如果我们将a和b对象序列化到文件中并从该文件反序列化,会发生什么呢? 我以为我们得到4个对象,每个对象2个。相同的对象,但实例不同。 但是我不确定是否还有其他事情,或者是对还是错。 如果需要任何技术来解决,请基于Java进行思考。 谢谢。

2
程序运行时如何调试/更改Java代码?
我刚刚看了一段视频,显示Notch(以Minecraft闻名)如何在其运行时调试和更改Minecraft。他暂停游戏,更改代码中的某些内容,然后取消暂停游戏,使更改立即生效,而无需重新启动程序。 这是如何运作的?使用哪种技术来实现这一目标?
15 java  debugging 

6
跳到Android或先学习Java基础知识?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 我精通C语言,知道一些C ++,但从未接触过Java。最近,我想到了一个我认为有潜力的应用程序,并且想开发它。 我打算先使用Android,因为它不需要Mac / iPhone。 所以我的问题是:我可以直接学习Android开发吗?在需要的时候继续学习Java语法(毕竟,我认为它与C / C ++并没有太大不同),还是应该采取一些措施?几周的时间先学习Java的基础知识,然后再开始进行Android开发?
15 java  android 

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.