gsi*_*011 1 java constructor subclass
很难搜索到这方面的信息,因为我不知道它叫什么,所以这是我猜的第一个问题.
是否使用此表示法:
new Object() {//code here}
Run Code Online (Sandbox Code Playgroud)
创建一个Object类型的新对象或创建一个对象的子类的新对象?如果它是一个子类,你可以把你可以用来声明一个类(成员变量,函数,内部类)的所有内容放在大括号内吗?你能为它写一个构造函数吗?
这称为匿名类.基本上,您正在定义一个子类.
这个电话:
Object a = new Object() {
// stuff
};
Run Code Online (Sandbox Code Playgroud)
..定义了一个新的Object子类//stuff(就像在普通中声明一样)A extends Object.
维基百科也有一篇关于它们的好文章.
它们主要用于闭包,这意味着匿名类中定义的函数可以访问final封闭范围中的变量.
例如肥胖型:
interface Function {
void run();
}
static void example(Function f) {
f.run();
}
void runExample() {
final int a = 10;
example(new Function() {
void run() {
// Notice that "a" was defined in the outer scope
System.out.println(a);
}
});
}
Run Code Online (Sandbox Code Playgroud)