Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java语法,如Object(){}_Java_Class_Reflection - Fatal编程技术网

java语法,如Object(){}

java语法,如Object(){},java,class,reflection,Java,Class,Reflection,为什么这是可能的,这意味着什么?谁能提醒我一下吗 例如: Class clazz = new Object(){}.getClass(); 结果是:类测试$1新对象(){}创建一个,作为对象的子类。它是测试的一个内部类,因此它会得到一个编译器生成的名称,就像您看到的那样 它创建一个匿名的内部类子类对象。我看到的空主体的主要用途是在Guice中,例如,用于捕获泛型类型参数: public class Testing { public static void main(String[] a

为什么这是可能的,这意味着什么?谁能提醒我一下吗

例如:

Class clazz = new Object(){}.getClass();

结果是:
类测试$1

新对象(){}
创建一个,作为
对象的子类。它是
测试的一个内部类
,因此它会得到一个编译器生成的名称,就像您看到的那样

它创建一个匿名的内部类子类
对象
。我看到的空主体的主要用途是在Guice中,例如,用于捕获泛型类型参数:

public class Testing {
    public static void main(String[] args) {
        Class clazz = new Object(){}.getClass();
        System.out.println(clazz);
    }
}
key=newtypeliteral(){};

这很有用,因为类型擦除不适用于此处的超类,因此Guice能够获取
列表
部分,该部分不能表示为普通类文本。

与以下代码相同:

key = new TypeLiteral<List<String>>() {};
Testing$1
是类的名称,它是类测试中定义的第一个匿名类

这些匿名类可以用于在您使用它的地方实现接口,并且它们可以访问本地最终变量

public class Testing{
      private class Anon extends Object{
      }
      public static void main(String[] args) {
          Class clazz = new Anon().getClass();
          System.out.println(clazz);
      }
}
final String text = "Written by new Thread";
Thread thread = new Thread(new Runnable(){
     public void run(){
         System.out.println(text);
}});
thread.start();