cari

Rumah  >  Soal Jawab  >  teks badan

Java 在集合初始化时赋值

1

2

3

4

5

6

<code>List<String> list = new ArrayList<String>(){

            {

                add("hello");

                remove(0);

            }

        };</code>

1

2

3

4

5

<code>map = new HashMap<String, Object>(){

            {

                put("name","123");

            }

        };</code>

请问这个语法是来自 Java 几?他的原理又是什么?一个大括号我知道是匿名内部类,但是里面的大括号不知道是什么意思??

大家讲道理大家讲道理2906 hari yang lalu365

membalas semua(3)saya akan balas

  • PHPz

    PHPz2017-04-18 09:24:24

    Sintaks ini dipanggil blok permulaan dinamik Java.

    Ia ialah coretan kod yang dilampirkan dalam kurungan kerinting dalam kelas dan dipanggil secara automatik apabila kelas itu dibuat seketika.

    Contohnya:

    1

    2

    3

    <code>class Person {

        {System.out.print(123);}

    }</code>

    Kemudian apabila new Person() dipanggil, 123 akan dicetak.

    Bagi kod dalam soalan anda, blok permulaan dinamik hanya diletakkan dalam kelas tanpa nama, jadi ia kelihatan agak pelik dan sukar difahami. Walau bagaimanapun, selepas semua, kelas tanpa nama juga adalah kelas, jadi mereka sah. Hasilnya ialah apabila kelas tanpa nama dijadikan instantiated, kod itu dilaksanakan dan beberapa elemen dimasukkan ke dalam koleksi, yang bersamaan dengan memulakan koleksi.

    Mengenai versi Java yang mana ia disokong, saya tidak ingat dengan jelas, tetapi dianggarkan ia telah disokong untuk masa yang lama, dan ia harus disokong sejak Java 5.

    Akhir sekali, memulakan koleksi dengan cara ini kelihatan seperti ilmu hitam.

    Selain itu, anda juga boleh menyemak Blok permulaan statik untuk membandingkan perbezaannya.

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:24:24

    Pendakap kerinting di dalam

    ialah blok permulaan, yang akan dilaksanakan antara panggilan pembina dalam

    baharu

    balas
    0
  • 黄舟

    黄舟2017-04-18 09:24:24

    Kurung kerinting bukan kelas dalaman tanpa nama, tetapi blok kod pembinaan, yang nampaknya dilaksanakan sebelum kaedah pembinaan (saya tidak ingat dengan jelasnya sebagai perkara yang sama dengan kaedah pembinaan).

    balas
    0
  • Batalbalas