在java中创建示例时为成员变量赋值

xzlaal3s  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(241)

在浏览其中一个库时,我发现java中的以下构造对我来说非常新。假设有一个类 Pointjava .

class Point {
    int x;
    int y;
    public Point() {}
    public Point(int x, int y) {
    this.x = x;
    this.y = y;
    }
}

为创建示例时 Point ,它们初始化变量 x 以及 y 在示例创建本身中,如下所示:

Point inst = new Point() {
            {
                this.x = 10;
                this.y = 20;
            }
        };

这与 instance block 用java还是别的什么?

9gm1akwq

9gm1akwq1#

你的第二个例子:
创建从点派生的匿名类
使用初始值设定项块初始化值
语法:

new Object() { ... }

看起来像个 Object ,但实际上正在创建从 Object . 然后内括号声明初始化程序块。
这是一种偶尔用于初始化集合的做法,例如。

new ArrayList<String>(){{
   add("1");
   add("2");
}};

需要注意的是,它是一个内部类,因此有一个对外部(周围)类的隐式引用。通常不会有问题,除非你来连载。

相关问题