Tag: java

了解奇怪的Java哈希函数

以下是java.util.HashMap散列函数的源代码。 这些评论足以说明它的成就。 但是如何? 什么是^和>>>操作符在做什么? 有人可以解释代码实际上是如何做评论说的吗? /** * Applies a supplemental hash function to a given hashCode, which * defends against poor quality hash functions. This is critical * because HashMap uses power-of-two length hash tables, that * otherwise encounter collisions for hashCodes that do not differ * in lower bits. Note: Null keys always map […]

Java中的Byte Array和Int转换

我有这两个函数有一些困难: byteArrayToInt和intToByteArray 。 问题是,如果我使用另一个来得到另一个结果,结果是不同的,你可以从我的下面的例子看到。 我找不到代码中的错误。 任何想法都非常受欢迎。 谢谢。 public static void main(String[] args) { int a = 123; byte[] aBytes = intToByteArray(a); int a2 = byteArrayToInt(aBytes); System.out.println(a); // prints '123' System.out.println(aBytes); // prints '[B@459189e1' System.out.println(a2); // prints '2063597568 System.out.println(intToByteArray(a2)); // prints '[B@459189e1' } public static int byteArrayToInt(byte[] b) { int value = 0; for (int i […]

我可以使用WatchService监视单个文件的更改吗(不是整个目录)?

当我试图注册一个文件,而不是一个目录java.nio.file.NotDirectoryException抛出。 我可以听单个文件更改,而不是整个目录?

在同一个线程上调用两次启动方法是否合法?

下面的代码导致java.lang.IllegalThreadStateException: Thread already started在程序中第二次调用start()方法时java.lang.IllegalThreadStateException: Thread already started 。 updateUI.join(); if (!updateUI.isAlive()) updateUI.start(); 第二次调用updateUI.start()时会发生这种情况。 我已经通过了多次,线程被调用,完成之前运行到完成updateUI.start() 。 调用updateUI.run()可以避免这个错误,但会导致线程在UI线程(调用线程,就像在SO上的其他post中提到的那样)中运行,这不是我想要的。 线程只能启动一次吗? 如果是这样,如果我想再次运行线程,该怎么办? 这个特定的线程是在后台做一些计算,如果我不在线程中做它比在UI线程中完成,并且用户有不合理的漫长的等待。

将控制台输出redirect到java中的string

我有一个返回types为VOID的函数,并直接在控制台上打印。 不过,我需要在string中的输出,以便我可以工作。 因为我不能做任何改变与返回types是VOID函数,所以我不得不redirect输出到string。 我怎样才能在JAVA中redirect它? 有很多关于将stdoutredirect到string的问题,但它们只redirect从用户获取的input,而不是某些函数的输出。

两个独立的Java桌面应用程序间的通信

我正在寻找开发两个独立的(但相关的)Java桌面应用程序。 我想要一个应用程序触发另一个应用程序的能力,传递可以被编辑和传回的数据,即通信将是双向的。 如果其他应用程序已经运行,我希望他们只是沟通,即我不想只通过命令行传递参数等。 一般来说,为了达到这个目的,我应该看什么策略/技巧?

用Java读取属性文件

我有以下代码试图读取属性文件: Properties prop = new Properties(); ClassLoader loader = Thread.currentThread().getContextClassLoader(); InputStream stream = loader.getResourceAsStream("myProp.properties"); prop.load(stream); 我在最后一行得到一个exception。 特别: Exception in thread "main" java.lang.NullPointerException at java.util.Properties$LineReader.readLine(Properties.java:418) at java.util.Properties.load0(Properties.java:337) at java.util.Properties.load(Properties.java:325) at Assignment1.BaseStation.readPropertyFile(BaseStation.java:46) at Assignment1.BaseStation.main(BaseStation.java:87) 谢谢,尼科斯

覆盖Java System.currentTimeMillis以testing对时间敏感的代码

有没有办法,无论是在代码或JVM参数,通过System.currentTimeMillis覆盖当前时间,而不是手动更改主机上的系统时钟? 一点背景: 我们有一个系统,它运行许多会计工作,围绕当前date(即本月的第一个月,第一年等) 不幸的是,许多遗留代码调用函数,如新的Date()或Calendar.getInstance(),两者最终都会调用System.currentTimeMillis。 出于testing的目的,现在我们不得不手动更新系统时钟来操纵代码认为testing正在运行的时间和date。 所以我的问题是: 有没有办法来重写由System.currentTimeMillis返回的内容? 例如,告诉JVM在从该方法返回之前自动添加或减去一些偏移量? 提前致谢!

为什么是Class.newInstance()“邪恶”?

Ryan Delucchi 在这里向Tom Hawtin的回答#3发表了评论: 为什么是Class.newInstance()“邪恶”? 这在响应代码示例: // Avoid Class.newInstance, for it is evil. Constructor<? extends Runnable> ctor = runClass.getConstructor(); Runnable doRun = ctor.newInstance(); 那么,为什么是邪恶呢?

如何在静态方法中实例化非静态内部类

我有以下一段代码: public class MyClass{ class Inner{ int s,e,p; } public static void main(String args[]){ Inner in; } } 用这部分代码是好的,但我不能像main in=new Inner()方法中实例化'in',因为它显示了non static field cannot be referenced in static context 。 我能做到的方式是什么? 我不想让我的内部类是静态的。