Tag: java

最好的方法来“否定”一个实例

我在想,如果存在一个更好/更好的方式来否定Java中的instanceof。 其实我是这样做的: if(!(str instanceof String)) { /* do Something */ } 但是,我认为这应该存在一个“美丽”的语法来做到这一点。 有人知道它是否存在以及语法如何? 编辑:美丽,我可能会说这样的事情: if(str !instanceof String) { /* do Something */ } // compile failure

Eclipse – 没有Java(JRE)/(JDK)…没有虚拟机

我试图让Eclipse v3.5(伽利略)在我的电脑上重新运行 – 我已经运行它没有任何问题,但现在我不断收到此错误: Java运行时环境(JRE)或Java开发工具包(JDK)必须可用才能运行Eclipse。 search以下位置后未findJava虚拟机:C:\ eclipse \ jre \ javaw.exe当前PATH中的javaw.exe 我刚刚完成了JDK和SDK的全新安装。 我有Windows 7(x64)。 这是怎么回事? 我如何解决它? 我无法运行任何ipconfig / tracert /或ping。

投射诠释枚举在Java中

在给定下列枚举的情况下,将Int转换为Java的枚举的正确方法是什么? public enum MyEnum { EnumValue1, EnumValue2 } MyEnum enumValue = (MyEnum) x; //Doesn't work???

如何将string对象转换为布尔对象?

如何将String对象转换为Boolean对象?

为什么在Java 8接口方法中不允许“final”?

Java 8的最有用的function之一是接口上的新的default方法。 基本上有两个原因(可能还有其他原因)为什么被引入: 提供实际的默认实现。 示例: Iterator.remove() 允许JDK API进化。 例如: Iterable.forEach() 从APIdevise者的angular度来看,我希望能够在接口方法上使用其他修饰符,例如final 。 这在添加便利方法时很有用,可以防止实现类中的“意外”覆盖: interface Sender { // Convenience method to send an empty message default final void send() { send(null); } // Implementations should only implement this method void send(String message); } 如果Sender是一个class级,以上是已经很普遍的做法: abstract class Sender { // Convenience method to send an empty message […]

Mockito可以捕获多次调用方法的参数吗?

我有一个被调用两次的方法,我想捕获第二个方法调用的参数。 以下是我所尝试的: ArgumentCaptor<Foo> firstFooCaptor = ArgumentCaptor.forClass(Foo.class); ArgumentCaptor<Foo> secondFooCaptor = ArgumentCaptor.forClass(Foo.class); verify(mockBar).doSomething(firstFooCaptor.capture()); verify(mockBar).doSomething(secondFooCaptor.capture()); // then do some assertions on secondFooCaptor.getValue() 但是我得到了TooManyActualInvocationsexception,因为Mockito认为doSomething只能被调用一次。 我该如何validationdoSomething的第二个调用的参数?

为什么Java打开连续的整数看起来运行速度更快,增加案例?

我正在研究一些需要高度优化的Java代码,因为它将在我的主程序逻辑中的许多地方被调用的热门函数中运行。 该代码的一部分涉及将doublevariables乘以10得到任意的非负int exponent s。 一个快速的方法(编辑:但不是最快的,见下面的更新2)获得乘数的值是switch exponent : double multiplyByPowerOfTen(final double d, final int exponent) { switch (exponent) { case 0: return d; case 1: return d*10; case 2: return d*100; // … same pattern case 9: return d*1000000000; case 10: return d*10000000000L; // … same pattern with long literals case 18: return d*1000000000000000000L; default: throw […]

制定一个私人的方法公开testing它…好主意?

版主注意: 这里已经有39个答案了(部分已经被删除) 在发布答案之前,请考虑是否可以在讨论中添加有意义的内容。 你很可能只是重复别人已经说过的话。 我偶尔会发现自己需要在公开课上做一些私人的方法,只是为了写一些unit testing。 通常这是因为该方法包含在类中的其他方法之间共享的逻辑,并且它自己testing逻辑更加整洁,或者另一个原因可能是我想要testing同步线程中使用的逻辑,而不必担心线程问题。 其他人发现自己这样做,因为我不喜欢这样做? 我个人认为奖金大于公开方法的问题,而这些方法并不真正提供课外的任何服务。 UPDATE 感谢大家的回答,似乎激起了人们的兴趣。 我认为普遍的共识是testing应该通过公共API来进行,因为这是一个课程将被使用的唯一途径,我也同意这一点。 我上面提到的上述情况在哪里我会这样做是罕见的情况下,我认为这样做的好处是值得的。 然而,我可以看到每个人都指出,它永远不会真的发生。 考虑到这一点,我认为改变你的代码来适应testing是一个坏主意 – 毕竟,我认为testing是一种支持工具,如果你愿意,改变一个系统来“支持一个支持工具”是公然的不好的做法。

Joda-Time中两个date之间的天数

如何查找两个Joda-Time DateTime实例之间的天数差异? 我认为如果开始是星期一,结束是星期二,我认为无论开始和结束date是小时还是分钟/秒,返回值都是1。 如果在晚上开始,在早上结束,则Days.daysBetween(start, end).getDays()会给我0。 我也有与其他date字段相同的问题,所以我希望有一个通用的方式来“忽略”较小的意义的领域。 换句话说,二月至四月四日之间的月份也是一点,14:45至15:12之间的时间也是一点。 不过14:01和14:55之间的小时差是0。

“Java并发实践”仍然有效吗?

实践中的Java Concurrency仍然有效吗? 我想知道本书中介绍的思想,概念和实现是否仍然符合最新的Java版本。 我问,因为最新版本是在2006年完成的。