2024-04-20 09:00:01

Java的隐藏特性

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


当前回答

从Java 1.5开始,Java现在有了更清晰的语法来编写变量函数。不只是传递一个数组,现在您可以执行以下操作

public void foo(String... bars) {
   for (String bar: bars)
      System.out.println(bar);
}

Bars自动转换为指定类型的数组。这不是一个巨大的胜利,但仍然是一场胜利。

其他回答

语言级assert关键字。

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

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

实例变量的Final:

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


静态{东西;}:

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

局部类。 从包含类的外部实例化Java内部类。

使用此关键字从内部类访问包含类的字段/方法。在下面的例子中,我们希望使用匿名内部类的容器类的sortAscending字段。使用ContainerClass.this.sortAscending代替this。sortAscending就是这样。

import java.util.Comparator;

public class ContainerClass {
boolean sortAscending;
public Comparator createComparator(final boolean sortAscending){
    Comparator comparator = new Comparator<Integer>() {

        public int compare(Integer o1, Integer o2) {
            if (sortAscending || ContainerClass.this.sortAscending) {
                return o1 - o2;
            } else {
                return o2 - o1;
            }
        }

    };
    return comparator;
}
}