Rumah > Java > javaTutorial > teks badan

Apakah kaedah sambungan ciri Java yang tiada

WBOY
Lepaskan: 2023-05-20 16:58:43
ke hadapan
1515 orang telah melayarinya

    Apakah kaedah sambungan

    Kaedah lanjutan ialah keupayaan untuk "menambah" kaedah terus kepada jenis sedia ada tanpa mencipta yang baharu? . jenis terbitan, susun semula atau ubah suai jenis sedia ada. Apabila memanggil kaedah sambungan, tidak ada perbezaan yang jelas berbanding dengan memanggil kaedah yang sebenarnya ditakrifkan dalam jenis tersebut.

    Mengapa kaedah sambungan diperlukan

    Pertimbangkan untuk melaksanakan fungsi berikut: selepas mengeluarkan rentetan yang mengandungi berbilang ID produk daripada Redis (setiap ID produk dipisahkan dengan koma), mula-mula bandingkan ID produk Alih keluar pendua (dan kekalkan susunan elemen), dan akhirnya gunakan koma untuk menyambungkan ID produk.

    Penulisan tradisional:

    Menggunakan penulisan Strim:

    Anggap bahawa kaedah sambungan boleh dilaksanakan di Java, dan kami menambah kaedah sambungan keList untuk tatasusunan (tukar tatasusunan menjadi List) , tambah kaedah sambungan kepadaSet untuk Senarai (menukar Senarai menjadi LinkedHashSet), dan tambah kaedah sambungan join untuk Koleksi (untuk menyambungkan bentuk rentetan elemen dalam koleksi menggunakan penyambung yang diberikan), maka kami akan dapat menulis kod seperti ini:

    Saya percaya anda sudah mempunyai jawapan mengapa kaedah sambungan diperlukan pada ketika ini:

    boleh terus meningkatkan perpustakaan kelas sedia ada dan bukannya menggunakan kelas alat

    Gunakan kelas alat untuk menulis kod dengan lebih lancar dan selesa menggunakan kaedah jenis itu sendiri

    Kod lebih mudah dibaca kerana ia adalah panggilan berantai dan bukannya menggunakan anak patung bersarang kaedah statik

    Cara untuk laksanakannya dalam kaedah Java Extension

    Mari kita tanya dahulu tentang ChatGPT yang popular baru-baru ini:

    Apakah kaedah sambungan ciri Java yang tiada

    Pandangan ChatGPT ialah di Java, kaedah sambungan disediakan melalui kelas alat Dilaksanakan dengan kaedah statik. Jadi seterusnya saya akan memperkenalkan teknologi hitam serba baharu:

    Manifold

    Syarat penyediaan

    Manifold dan Lombok berfungsi dengan cara yang sama, kedua-duanya disusun melalui pemproses anotasi yang diproses apabila . Untuk menggunakan Manifold dengan berkesan, anda perlu memasang pemalam Manifold IDEA

    dalam IDEA dan kemudian tambah anotasiProcessorPaths pada pemalam-pengkompil maven pom projek:

    Jika anda menggunakan Lombok dalam projek anda, Lombok perlu ditambahkan ke annotationProcessorPaths:

    Menulis kaedah sambungan

    Dalam JDK, kaedah split String menggunakan rentetan sebagai parameter, iaitu, String[] split (String). Sekarang mari kita tambahkan kaedah sambungan String[] split(char) ke String: Split mengikut aksara yang diberikan.

    Tulis kaedah sambungan berdasarkan Manifold:

    Anda boleh menemui kaedah statik yang pada asasnya merupakan kelas alat, tetapi terdapat beberapa keperluan:

    Kelas alat perlu menggunakan @Extension Manifold anotasi

    Dalam kaedah statik, parameter jenis sasaran perlu diberi anotasi dengan @This

    Nama pakej kelas alat perlu diakhiri dengan sambungan. Jenis sasaran nama kelas yang layak sepenuhnya

    ——Pelajar yang telah menggunakan C# mungkin akan tersenyum secara sedar Ini adalah kaedah lanjutan C# yang ditiru.

    Mengenai perkara 3, sebab keperluan ini ialah Manifold berharap untuk mencari kaedah sambungan dalam projek dengan cepat, mengelakkan pengimbasan anotasi semua kelas dalam projek dan meningkatkan kecekapan pemprosesan.

    mempunyai keupayaan untuk melanjutkan kaedah, kini kita boleh memanggilnya seperti ini:

    Amazing! Dan anda boleh mendapati bahawa System.out.println(numStrs.toString()) sebenarnya mencetak bentuk rentetan objek tatasusunan - bukan alamat objek tatasusunan. Semak imbas App.class yang dinyahkompilasi dan perhatikan bahawa panggilan kaedah sambungan telah digantikan dengan panggilan kaedah statik

    Apakah kaedah sambungan ciri Java yang tiada

    dan kaedah toString tatasusunan menggunakan Manifold untuk mentakrif tatasusunan. Kaedah sambungan ManArrayExt.toString(@This Object array):

    Apakah kaedah sambungan ciri Java yang tiada

    [Ljava.lang.String;@511d50c0 Apa kejadahnya, Selamat tinggal, tidak akan berjumpa lagi~

    Oleh kerana panggilan kaedah sambungan digantikan dengan panggilan kaedah statik pada masa penyusunan, menggunakan kaedah sambungan Manifold, tiada masalah walaupun objek kaedah panggilan adalah batal, kerana kod yang diproses melepasi null sebagai parameter kepada statik yang sepadan kaedah. Contohnya, apabila melanjutkan Koleksi:

    dan kemudian memanggil:

    java.lang.NullPointerException, Selamat tinggal, tidak akan berjumpa lagi~

    Kaedah sambungan tatasusunan

    Apakah kaedah sambungan ciri Java yang tiada

    Kami melihat List ditulis seperti ini: @Self digunakan untuk menunjukkan jenis nilai beranotasi jika ia adalah @Self, iaitu @Self(false), yang mewakili nilai beranotasi. Nilai adalah jenis yang sama dengan nilai anotasi @Ini (benar) menunjukkan jenis elemen dalam tatasusunan.

    Untuk tatasusunan objek, kita dapat melihat bahawa kaedah toList mengembalikan Senarai yang sepadan (T ialah jenis elemen tatasusunan):

    Apakah kaedah sambungan ciri Java yang tiada

    Tetapi jika ia tatasusunan Jenis primitif, nilai pulangan yang ditunjukkan oleh IDEA ialah:

    Apakah kaedah sambungan ciri Java yang tiada

    Tetapi saya menggunakan Java, bagaimana boleh memadam generik kaedah mempunyai fungsi yang hebat seperti Senarai - Jadi anda boleh hanya gunakan jenis asli untuk menerima nilai pulangan ini:)

    Apakah kaedah sambungan ciri Java yang tiada

    —— Harapkan Projek Valhalla akan dikeluarkan tidak lama lagi.

    Kami sering melihat dalam pelbagai projek bahawa setiap orang mula-mula membungkus objek ke dalam Pilihan, dan kemudian melakukan penapisan, peta, dsb. Melalui pemetaan jenis @Self, anda boleh menambah kaedah yang sangat praktikal pada Objek:

    Kemudian mana-mana objek akan mempunyai kaedah asOpt().

    Berbanding dengan pembungkusan luar biasa yang perlu dilakukan sebelum ini:

    Anda kini boleh menggunakan Pilihan secara semula jadi:

    Sudah tentu, Object ialah kelas induk bagi semua kelas, jadi Anda masih perlu berfikir dengan teliti sama ada sesuai untuk melakukannya.

    Kaedah statik lanjutan

    Kita semua tahu bahawa Java9 menambahkan kaedah kilang pada koleksi:

    Bukankah ia menggoda? Kerana jika anda tidak menggunakan Java 9 dan ke atas (Java 8: tunjukkan saya kad ID anda), anda perlu menggunakan perpustakaan seperti Guava - namun, ImmutableList.of tidak sebaik List.of yang digunakan Ia datang secara semula jadi .

    Tidak mengapa, Manifold berkata: "Tidak mengapa, saya akan mengambil tindakan". Memperluaskan kaedah statik berdasarkan Manifold ialah menambah @Extension kepada kaedah statik kelas lanjutan:

    Kemudian anda boleh menipu diri anda untuk menggunakan versi selepas Java8 - anda boleh melakukan apa sahaja yang anda mahu, saya menggunakan Java8.

    BTW, kerana Object ialah kelas induk bagi semua kelas, jika anda menambah kaedah sambungan statik pada Object, ini bermakna anda boleh terus mengakses kaedah statik ini di mana-mana sahaja tanpa perlu mengimport - Tahniah Anda, buka kunci "fungsi teratas".

    Atas ialah kandungan terperinci Apakah kaedah sambungan ciri Java yang tiada. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan