Rumah  >  Artikel  >  Java  >  Kovarian, Invarian dan Kontravarian di Jawa: Apakah Perbezaannya dan Mengapa Saya Perlu Peduli?

Kovarian, Invarian dan Kontravarian di Jawa: Apakah Perbezaannya dan Mengapa Saya Perlu Peduli?

Susan Sarandon
Susan Sarandonasal
2024-11-12 01:38:02308semak imbas

Covariance, Invariance, and Contravariance in Java: What's the Difference and Why Should I Care?

Kovarian, Invarian dan Kontravarian Diterangkan dalam Bahasa Inggeris Biasa

Pengenalan:
Memahami kovarian, invarian, dan kontravarians boleh mencabar, tetapi ia penting untuk memahami transformasi jenis dan hubungan di Jawa. Artikel ini bertujuan untuk memudahkan konsep ini dan memberikan contoh dunia sebenar untuk meningkatkan pemahaman.

Kovarian:
Kovarians menerangkan transformasi jenis yang perhubungan subjenis dikekalkan. Jika jenis A ialah subjenis jenis B, maka penjelmaan f(A) akan menghasilkan f(B) menjadi subjenis f(A).

Contoh:
Pertimbangkan satu penjelmaan f(Senarai) = Senarai. Sejak Senarai ialah superjenis Senarai, kemudian Senarai> ialah superjenis Senarai>. Ini menunjukkan kovarian.

Invarian:
Invarian berlaku apabila hubungan subjenis tidak dipengaruhi oleh transformasi jenis. Jika A ialah subjenis B, maka f(A) tidak akan menjadi subjenis atau superjenis f(B).

Contoh:
Generik Java berkelakuan dalam cara yang tidak berubah . Contohnya, f(ArrayList
) = ArrayList. Sejak ArrayList dan ArrayList adalah jenis yang berbeza, bukan juga subjenis atau superjenis yang lain.

Kontravarian:
Kontravarian ialah songsangan bagi kovarians. Hubungan subjenis diterbalikkan semasa transformasi. Jika A ialah subjenis B, maka f(B) akan menjadi subjenis f(A).

Contoh:
Pertimbangkan jenis penjelmaan f(A[]) = B[]. Di Jawa, tatasusunan adalah kovarian, yang bermaksud bahawa jika A[] ialah subjenis B[], maka f(A[]) = B[] juga akan menjadi subjenis f(B[]) = B[].

Aplikasi:
Kovarian, invarian dan kontravarian memainkan peranan penting dalam Java:

  • Tugasan: Hanya objek yang serasi jenis boleh ditugaskan antara satu sama lain. Pengkompil menyemak sama ada jenis sumber ialah subjenis jenis sasaran.
  • Penggunaan Kaedah: Apabila menggunakan kaedah, parameter sebenar mestilah subjenis jenis parameter yang diisytiharkan. Jenis pemulangan kaedah mestilah superjenis jenis pemulangan yang dijangkakan.
  • Mengatasi: Di Java, parameter dan jenis pemulangan kaedah yang ditindih mesti sepadan atau kovari dengan jenis kaedah asal.

Atas ialah kandungan terperinci Kovarian, Invarian dan Kontravarian di Jawa: Apakah Perbezaannya dan Mengapa Saya Perlu Peduli?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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