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
Barbara Streisandasal
2025-01-20 22:14:131096semak imbas

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>

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>

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>

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>

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!

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