Java-如何使用Joda Time Jar计算准确的时差

我从http://sourceforge.net/projects/joda-time/files/joda-time/2.2/下载的Joda时间jar有问题。 当我使用以下代码段时,我可以得到结果 static void timeDifferencewithJoda() { String dateStart = “01/14/2012 09:29:58”; String dateStop = “01/15/2012 10:31:48”; SimpleDateFormat format = new SimpleDateFormat(“MM/dd/yyyy HH:mm:ss”); Date d1 = null; Date d2 = null; try { d1 = format.parse(dateStart); d2 = format.parse(dateStop); DateTime dt1 = new DateTime(d1); DateTime dt2 = new DateTime(d2); System.out.print(Days.daysBetween(dt1, dt2).getDays() + ” days, “); System.out.print(Hours.hoursBetween(dt1, […]

了解Java中的generics类型

我有一个通用类,说: MyClass 在这个类的方法里面,我想测试T的类型,例如: void MyMethod() { if (T == String) … if (T == int) … } 我怎样才能做到这一点 ? 谢谢你的帮助

如何在Java中阻止线程在阻塞读取操作中等待?

我有一个执行以下代码的线程: public void run() { try { int n = 0; byte[] buffer = new byte[4096]; while ((n = in.read(buffer)) != -1) { out.write(buffer, 0, n); out.flush(); } } catch (IOException e) { System.out.println(e); } } 其中是System.in 。 我怎样才能优雅地停止这样的线程? 关闭System.in和使用Thread.interrupt似乎都不起作用。

我可以以非模态方式使用Java JOptionPane吗?

我正在开发一个应用程序,当某个动作发生时弹出一个JOptionPane。 我只是想知道当JOptionPane确实弹出时你怎么可能仍然使用后台应用程序。 目前,当JOptionPane弹出时,我不能做任何其他事情,直到我关闭JOptionPane。 编辑 感谢回复人员和信息。 认为生病了将此function从应用程序中删除,因为它看起来可能比必要的更麻烦。

如何在Mac OS上设置JButton的背景颜色

通常使用Java Swing,您可以使用以下命令设置按钮的背景颜色: myJButton.setBackground(Color.RED); 这会导致按钮变红。 但在Mac OS上,这种方法似乎被忽略了。 该按钮只保留默认颜色。 如何在Mac OS上设置JButton的颜色?

Google Guava“zip”两个列表

使用Google Guava(Google Commons),有没有办法将两个大小相同的列表合并为一个列表,新列表包含两个输入列表的复合对象? 例: public class Person { public final String name; public final int age; public Person(String name, int age) { this.name = name; this.age = age; } public String toString() { return “(” + name + “, ” + age + “)”; } } 和 List names = Lists.newArrayList(“Alice”, “Bob”, “Charles”); List ages […]

Java:JLabels中的换行符?

我正在尝试使用多行文本制作Swing JLabel。 它添加得很好,但换行没有通过。 我该怎么做呢? 或者,我可以只为JLabel指定一个最大宽度,并知道文本会换行,就像在div中一样吗? private void addLegend() { JPanel comparisonPanel = getComparisonPanel(); //this all displays on one line JLabel legend = new JLabel(“MMM FFF MMM FFFO O OOM M MMMM.\nMMM FFF MMM FFFO O OOM M MMMM.\nMMM FFF MMM FFFO O OOM M MMMM.\n”); comparisonPanel.add(legend); }

java优化nitpick:在投射之前调用instanceof进行检查是否更快投出一些东西并让它抛出exception?

在任何人说什么之前我只是出于好奇而问这个问题; 我不打算根据这个答案进行任何过早的优化。 我的问题是关于使用reflection和铸造的速度。 标准的说法是“反思很慢”。 我的问题是哪个部分确实很慢,为什么; 特别是在比较某事物是否是另一个实例的父母时。 我非常有信心只是将一个对象的类与另一个Class对象进行比较的速度与任何比较一样快,大概只是直接比较已经存储在Object状态中的单例对象; 但如果一个class级是另一个class级的父母呢? 我通常认为instanceof与普通类检查一样快,但今天我想到了它,似乎有些reflection必须在“幕后”发生才能工作。 我在网上查了一下,发现有人说instanceof很慢; 大概是因为比较物体的父母所需的reflection? 这导致了下一个问题,即仅仅是铸造。 如果我将某些东西作为对象投射,那么我不会得到ClassCastException 。 但是,如果将对象转换为自身的父对象,则不会发生这种情况。 基本上我正在做一个调用的instanceof ,或者当我在运行时进行演员时,我正在做这个效果的逻辑吗? 我从来没有听到过任何人暗示过投射物体之前可能会很慢。 不可否认,并非所有演员都是提供对象的父级,但很多演员都是父类。 然而,从来没有人暗示这可能会很慢。 那是哪个呢。 真的不是那么慢吗? instanceof和cast都是父类慢吗? 或者是否有某种原因可以比调用instanceof更快地完成演员表?

检查“get”调用链是否为null

假设我想执行以下命令: house.getFloor(0).getWall(WEST).getDoor().getDoorknob(); 为了避免NullPointerException,我必须在以下情况下执行以下操作: if (house != null && house.getFloor(0) && house.getFloor(0).getWall(WEST) != null && house.getFloor(0).getWall(WEST).getDoor() != null) … 是否有一种方法或已经存在的Utils类更优雅地执行此操作,让我们说下面的内容? checkForNull(house.getFloor(0).getWall(WEST).getDoor().getDoorknob());

Mockito可以根据方法调用时的值validation参数吗?

我有一个Foo类,它是SUT和一个Bar类,它是它的合作者。 Foo使用“ expectedList ”作为参数调用Bar上的run(List values) 。 然后, Foo将向此List添加一些元素,以使其状态与调用run()时的状态不同。 这是我的测试用例。 @Test public void testFoo() { Bar collaborator = spy(new Bar()); Foo sut = new Foo(collaborator); verify(collaborator).run(expectedList); } 请注意,协作者实际上是间谍对象而不是模拟对象。 此测试用例将失败,因为即使使用等于expectedList的参数调用run() ,它也会被修改,因为它的当前值不再等于expectedList 。 然而,这是它应该工作的方式,所以我想知道是否有办法让Mockito在调用方法时存储参数的快照,并根据这些值而不是最近的值来validation它们。