Rumah > Java > javaTutorial > Memahami Generik dalam Java: Contoh Troli Beli-belah dengan Kelas Tersuai

Memahami Generik dalam Java: Contoh Troli Beli-belah dengan Kelas Tersuai

Barbara Streisand
Lepaskan: 2025-01-20 22:14:13
asal
1001 orang telah melayarinya

Understanding Generics in Java: A Shopping Cart Example with Custom Classes

Generik Java adalah penting untuk menulis kod yang selamat jenis dan boleh digunakan semula. Ia membolehkan penciptaan kelas, kaedah dan antara muka yang boleh mengendalikan pelbagai jenis data, meningkatkan keteguhan dan fleksibiliti kod. Artikel ini menggambarkan generik menggunakan contoh troli beli-belah yang menyimpan jenis buah-buahan yang berbeza, diwakili oleh kelas tersuai.


Mengapa Generik? Had Tatasusunan

Tatasusunan Java adalah khusus jenis; tatasusunan satu jenis tidak boleh menyimpan elemen lain:

<code class="language-java">String[] fruits = new String[3];
fruits[0] = "Apple";  // Correct
fruits[1] = 123;      // Compile-time error</code>
Salin selepas log masuk

Keselamatan jenis ini bermanfaat, tetapi tatasusunan kurang fleksibiliti. Mencipta troli beli-belah untuk pelbagai buah-buahan (pisang, epal, anggur) menggunakan tatasusunan memerlukan pengendalian jenis manual yang menyusahkan.

Generik menawarkan penyelesaian: struktur data yang fleksibel namun selamat jenis. Mari kita bina ini, bermula dengan kelas Buah-buahan tersuai.


Langkah 1: Menentukan Kelas Buah

Kami akan mentakrifkan kelas Fruit asas dan subkelas untuk Pisang, Epal dan Anggur, masing-masing dengan sifat unik.

<code class="language-java">// Base class for fruits
public abstract class Fruit {
    private String name;

    public Fruit(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

// Specific fruit classes
public class Banana extends Fruit {
    public Banana() {
        super("Banana");
    }
}

public class Apple extends Fruit {
    public Apple() {
        super("Apple");
    }
}

public class Grape extends Fruit {
    public Grape() {
        super("Grape");
    }
}</code>
Salin selepas log masuk

Rasional Kelas Abstrak

Kelas Fruit adalah abstrak untuk menyediakan kefungsian biasa (seperti name) dan mewujudkan struktur warisan yang jelas. Antara muka mungkin lebih baik jika berbilang warisan atau kontrak yang lebih mudah diperlukan. Ini memerlukan perbincangan lanjut!


Langkah 2: Mencipta Troli Beli-belah Generik

Sekarang, mari kita bina kelas ShoppingCart menggunakan generik untuk memegang sebarang jenis buah sambil mengekalkan keselamatan jenis.

<code class="language-java">import java.util.ArrayList;

public class ShoppingCart<T extends Fruit> { // Restricts to Fruit and subclasses
    private ArrayList<T> items = new ArrayList<>();

    public void addItem(T item) {
        items.add(item);
    }

    public void removeItem(T item) {
        items.remove(item);
    }

    public void displayItems() {
        for (T item : items) {
            System.out.println(item.getName());
        }
    }
}</code>
Salin selepas log masuk

T extends Fruit memastikan hanya Fruit atau keturunannya boleh ditambah, mengelakkan ralat jenis.


Langkah 3: Menggunakan Troli Beli-belah

Mari kita lihat cara menggunakan ShoppingCart dengan objek buah-buahan kita.

<code class="language-java">public class Main {
    public static void main(String[] args) {
        ShoppingCart<Fruit> fruitCart = new ShoppingCart<>();

        // Adding fruits
        fruitCart.addItem(new Banana());
        fruitCart.addItem(new Apple());
        fruitCart.addItem(new Grape());

        // Displaying contents
        System.out.println("Shopping Cart:");
        fruitCart.displayItems();

        // Removing an item
        fruitCart.removeItem(new Apple()); // Removal based on object equality (equals() can be overridden)
        System.out.println("\nAfter removing Apple:");
        fruitCart.displayItems();
    }
}</code>
Salin selepas log masuk

Kelebihan Generik

  1. Keselamatan Jenis: Mengehadkan T menghalang penambahan jenis yang salah.
  2. Fleksibiliti: Troli mengendalikan sebarang jenis Fruit, menggalakkan kebolehgunaan semula.
  3. Tiada Penghantaran: Mendapatkan semula item tidak memerlukan penghantaran, mengurangkan ralat masa jalan.

Kesimpulan

Fruit hierarki dan ShoppingCart contoh ini menunjukkan kuasa dan fleksibiliti generik Java. Generik meningkatkan kejelasan dan kebolehselenggaraan kod, menjadikannya tidak ternilai untuk pembangun Java di semua peringkat.


? Rujukan

  • Dokumentasi Java Generics
  • Java Berkesan (Joshua Bloch)

? Berhubung Dengan Saya

  • LinkedIn
  • GitHub
  • Portfolio

Atas ialah kandungan terperinci Memahami Generik dalam Java: Contoh Troli Beli-belah dengan Kelas Tersuai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan