Rumah >Java >javaTutorial >Sempadan generik Java dan peranannya

Sempadan generik Java dan peranannya

王林
王林asal
2024-04-12 21:48:021289semak imbas

Sempadan generik Java menyatakan kekangan pada parameter jenis, memastikan hanya jenis yang memenuhi kekangan ini boleh digunakan. Terdapat dua jenis sempadan generik: sempadan atas (lanjutan) dan sempadan bawah (super). Sempadan atas memerlukan parameter jenis menjadi subkelas jenis yang ditentukan, manakala sempadan bawah memerlukan parameter jenis ialah superclass jenis yang ditentukan. Sempadan generik meningkatkan keselamatan jenis, meningkatkan prestasi dan kebolehbacaan kod. Sempadan Generik Java dan Peranannya Sempadan generik membolehkan kami menentukan kekangan pada parameter jenis, memastikan bahawa hanya jenis yang memenuhi kekangan ini boleh digunakan.

Java 泛型边界与它的作用Jenis sempadan generik

Java menyediakan dua jenis sempadan generik:

Sempadan atas (lanjutan): Parameter jenis mestilah subkelas jenis yang ditentukan atau dirinya sendiri.

Sempadan bawah (super):

Parameter jenis mestilah kelas super jenis yang ditentukan atau dirinya sendiri.

Menggunakan sempadan generik

  • Apabila menggunakan sempadan generik, kami akan menentukan sempadan dalam pengisytiharan generik:
    <T extends Number> // 上限边界
    lanjutkan kata kunci bermakna T mestilah subkelas kelas Number atau Number itu sendiri.
  • <? super String> // 下限边界
  • Kata kunci super bermaksud T mestilah superclass kelas String atau String itu sendiri. . , T dihadkan kepada subkelas Nombor, yang bermaksud kita hanya boleh menambah dan mendapatkan Nombor dan subkelasnya (seperti Integer dan Double) jenis data.
  • Faedah

Menggunakan sempadan generik mempunyai faedah berikut:

Keselamatan jenis yang dipertingkatkan: Ia membantu mengelakkan jenis yang salah daripada dihantar ke kelas atau kaedah generik.

Prestasi yang dipertingkatkan: Pengkompil boleh melakukan pengoptimuman yang lebih baik kerana ia mengetahui kekangan jenis tertentu. extends 关键字表示 T 必须是 Number 类的子类或 Number 本身。

import java.util.LinkedList;

class NumberList<T extends Number> {
    private LinkedList<T> numbers;

    public NumberList() {
        numbers = new LinkedList<>();
    }

    public void add(T number) {
        numbers.add(number);
    }

    public T get(int index) {
        return numbers.get(index);
    }
}

super 关键字表示 T 必须是 String 类的超类或 String 本身。

实战案例

让我们创建一个 LinkedList 来存储数字,并使用上限边界来确保列表中只包含 Number 类型:

rrreee

在这个例子中,T 被限制为 Number 的子类,这意味着我们只能添加和检索 Number 及其子类(如 IntegerDouble

Meningkatkan kebolehbacaan kod: Sempadan generik menjadikan kod lebih mudah difahami kerana ia menyatakan dengan jelas jenis data yang boleh diterima.

Atas ialah kandungan terperinci Sempadan generik Java dan peranannya. 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