2024-04-20 09:00:01

Java的隐藏特性

在阅读了c#的隐藏特性之后,我想知道Java的隐藏特性有哪些?


当前回答

strictfp关键字。(但我从未见过它在实际应用中使用:)

你可以使用下面的符号来获取基元类型的类: float.class等等。在做反射的时候非常有用。

Final数组可用于从匿名内部类中“返回”值(警告,下面的示例无用):

final boolean[] result = new boolean[1];
SwingUtilities.invokeAndWait(new Runnable() {
  public void run() { result[0] = true; }
});

其他回答

实例变量的Final:

对多线程代码非常有用,它使争论实例状态和正确性变得容易得多。在工业环境中还没见过很多,在java类中也没想过。


静态{东西;}:

用于初始化静态成员(我也喜欢用静态方法来做它(因为它有一个名称)。没有思想。

您可以定义一个匿名子类,并直接调用它上的方法,即使它没有实现接口。

new Object() {
  void foo(String s) {
    System.out.println(s);
  }
}.foo("Hello");

同一个类的实例可以访问其他实例的私有成员:

class Thing {
  private int x;

  public int addThings(Thing t2) {
    return this.x + t2.x;  // Can access t2's private value!
  }
}

javabean属性访问器方法不必以“get”和“set”开头。

甚至Josh Bloch在《Effective Java》中也犯了这个错误。

源代码url。例如,这是一些合法的java源代码:

http://google.com

(是的,这是在Java Puzzlers中。我笑了…)