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();