2024-04-20 09:00:01

Java的隐藏特性

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


当前回答

来自Java 6的注释处理API看起来非常适合代码生成和静态代码验证。

其他回答

java.util.Arrays中的asList方法允许变量参数、泛型方法和自动装箱的良好组合:

List<Integer> ints = Arrays.asList(1,2,3);

可以在匿名内部类上定义和调用方法。

其实它们并没有那么隐藏,但是很少有人知道它们可以用来定义一个类中的新方法,并像这样调用它:

(new Object() {
    public String someMethod(){ 
        return "some value";
    }
}).someMethod();

可能不是很常见,因为它也不是很有用,你只能在定义方法时调用它(或通过反射)

动态代理(在1.3中添加)允许您在运行时定义符合接口的新类型。它派上用场的次数多得惊人。

语言级assert关键字。

一些控制流的技巧,最后围绕一个return语句:

int getCount() { 
  try { return 1; }
  finally { System.out.println("Bye!"); }
}

确定赋值规则将检查最终变量总是通过简单的控制流分析进行赋值:

final int foo;
if(...)
  foo = 1;
else
  throw new Exception();
foo+1;