0Pricing
Java Academy · Pelajaran

requires dan exports

Kendalikan dependensi dan visibilitas.

requires dan exports adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.

Mengendalikan Graf Modul

Dua direktif membentuk graf modul: requires mendeklarasikan hal yang menjadi dependensi Anda, sedangkan exports mendeklarasikan hal yang Anda ungkapkan.

Pelajaran ini membahas variasinya serta aturan keterbacaan dan aksesibilitas yang dihasilkannya.

Dependensi Biasa

requires X; sederhana berarti "modul ini membaca modul X." Kode Anda dapat menggunakan tipe publik yang diekspor X, tetapi pengguna modul Anda tidak memperoleh informasi apa pun tentang X.

module com.example.app {
    requires java.sql;
}

Dependensi Transitif

requires transitive Y; berarti modul mana pun yang membaca modul Anda juga membaca Y. Ini disebut keterbacaan tersirat dan berguna ketika API Anda mengekspos tipe milik Y.

module com.example.api {
    requires transitive java.sql;
}

Kapan Menggunakan Dependensi Transitif

Gunakan transitive ketika suatu metode dalam API yang Anda ekspor mengembalikan atau menerima tipe dari modul lain. Jika tidak, pemanggil bahkan tidak dapat menyebutkan tipe hasil tersebut tanpa requires miliknya sendiri.

Hal ini membebaskan pengguna dari keharusan mendeklarasikan dependensi yang berulang.

Dependensi Statis

requires static Z; mendeklarasikan dependensi yang hanya diperlukan saat kompilasi. Modul tersebut diperlukan untuk mengompilasi, tetapi bersifat opsional saat program berjalan, sehingga cocok untuk pemroses anotasi atau integrasi opsional.

module com.example.app {
    requires static com.example.annotations;
}

Ekspor Biasa

exports pkg; membuat tipe publik dari pkg dapat dibaca oleh semua modul yang memerlukan modul Anda.

module com.example.lib {
    exports com.example.lib.api;
}

Ekspor Terbatas

Ekspor terbatas mengungkapkan sebuah paket hanya kepada modul bernama tertentu dengan menggunakan exports pkg to modA, modB;. Ini berguna untuk modul rekan dalam sistem yang lebih besar.

module com.example.core {
    exports com.example.core.internal to com.example.web, com.example.batch;
}

Pembukaan untuk Refleksi

exports memberikan akses saat kompilasi dan saat berjalan ke anggota publik. Refleksi mendalam (bidang privat) justru memerlukan opens pkg;, yang digunakan oleh kerangka kerja seperti Jackson atau Hibernate.

module com.example.model {
    exports com.example.model;
    opens com.example.model.entities to com.fasterxml.jackson.databind;
}

Modul Terbuka

Jika seluruh modul memerlukan akses reflektif, seperti yang umum pada kerangka kerja lama, deklarasikan modul tersebut sebagai open. Setelah itu, setiap paket terbuka untuk refleksi, meskipun exports biasa tetap mengendalikan akses saat kompilasi.

open module com.example.beans {
    requires java.logging;
}

Keterbacaan vs Aksesibilitas

Dua kondisi harus sama-sama terpenuhi untuk menggunakan tipe dari modul lain:

  • Keterbacaan: modul Anda menggunakan requires untuk modul tersebut
  • Aksesibilitas: modul tersebut mengekspor paketnya dan tipenya bersifat publik

Jika salah satu tidak terpenuhi, kompiler menolak kode Anda.

Menyatukannya

Contoh modul yang terbentuk dengan baik, yang menyediakan kembali tipe JDBC dan membuka entitas untuk perpustakaan JSON:

module com.example.service {
    requires transitive java.sql;
    requires static com.example.annotations;

    exports com.example.service.api;
    exports com.example.service.spi to com.example.plugins;
    opens com.example.service.dto to com.fasterxml.jackson.databind;
}

Pemeriksaan Singkat

Pilih direktif untuk tipe API yang disediakan kembali.

Ringkasan

Anda telah mempelajari direktif dependensi dan visibilitas:

  • requires, requires transitive, requires static
  • exports dan exports ... to terbatas
  • opens dan open module untuk refleksi
  • Penggunaan memerlukan keterbacaan dan aksesibilitas

Berikutnya: memisahkan keterikatan dengan layanan melalui deklarasi penyediaan dan penggunaan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “requires dan exports” gratis?

Ya — teks lengkap “requires dan exports” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “requires dan exports”?

Kendalikan dependensi dan visibilitas. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “requires dan exports” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. module-info.java
  2. requires dan exports
  3. Layanan dengan provides/uses
  4. Migrasi ke Modul
← Kembali ke Java Academy