在浏览一个库时,我在java中找到了以下构造,这对我来说真的很新.假设有一类Point在java.
class Point {
int x;
int y;
public Point() {}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
Run Code Online (Sandbox Code Playgroud)
在创建实例时Point,它们初始化变量x并y在实例创建中自动如下:
Point inst = new Point() {
{
this.x = 10;
this.y = 20;
}
};
Run Code Online (Sandbox Code Playgroud)
这与instance blockjava或其他东西有关吗?
你的第二个例子:
语法:
new Object() { ... }
Run Code Online (Sandbox Code Playgroud)
看起来像一个Object,但实际上是创建一个派生自的新对象Object.然后内括号声明初始化块.
这种做法偶尔用于初始化集合,例如
new ArrayList<String>(){{
add("1");
add("2");
}};
Run Code Online (Sandbox Code Playgroud)
有一点需要注意的是,它是一个内部类,因此有一个对外部(周围)类的隐含引用.通常不是问题,除非(比方说)你来串行化这个.
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |