Rumah >Java >javaTutorial >Apakah amalan terbaik untuk kaedah generik di Jawa?

Apakah amalan terbaik untuk kaedah generik di Jawa?

WBOY
WBOYasal
2024-05-05 09:45:01365semak imbas

Amalan terbaik kaedah generik Java termasuk: menyediakan parameter jenis eksplisit, memilih kad bebas jenis, menggunakan jenis primitif dengan berhati-hati, memilih kad bebas sempadan dan mengehadkan sempadan jenis kepada syarat yang diperlukan. Kes praktikal: Kaedah penapis ialah aplikasi praktikal kaedah generik, digunakan untuk menapis nombor genap.

Java 泛型方法的最佳实践是什么?

Amalan Terbaik untuk Kaedah Generik Java

Kaedah generik boleh meningkatkan kebolehgunaan semula kod dan kesederhanaan kod. Kaedah generik dalam Java harus mematuhi amalan terbaik berikut:

1 Sediakan parameter jenis eksplisit

Kaedah generik harus menyatakan dengan jelas parameter jenisnya:

public static <T> List<T> filter(List<T> list, Predicate<T> predicate) {
    // ...
}

2. menggunakan kad bebas jenis dan bukannya parameter jenis eksplisit boleh meningkatkan fleksibiliti kod anda:

public static <T> boolean anyMatch(List<? extends T> list, Predicate<T> predicate) {
    // ...
}

3 Hadkan had jenis kepada syarat yang diperlukan

Had jenis untuk kaedah generik hendaklah dihadkan kepada yang benar-benar diperlukan Syarat:

// 仅当需要对 T 实现 Comparable 接口时才使用此边界
public static <T extends Comparable<T>> T max(List<T> list) {
    // ...
}
.

4. Gunakan jenis primitif dengan berhati-hati

Elakkan menggunakan jenis primitif (seperti Senarai) sebanyak mungkin, kerana ia akan memecahkan keselamatan jenis:

// 使用泛型方法参数更安全
public static <T> List<T> concat(List<T> list1, List<T> list2) {
    // ...
}

5 List),因为它们会破坏类型安全性:

public static <T> void swap(List<T> list, int i, int j) {
    T temp = list.get(i);
    list.set(i, list.get(j));
    list.set(j, temp);
}

5. 优先使用边界通配符

边界通配符 (6b3d0130bba23ae47fe2b8e8cddf0195

Kad bebas sempadan (6b3d0130bba23ae47fe2b8e8cddf0195) boleh digunakan untuk mendapatkan dan menetapkan elemen tanpa melanggar keselamatan jenis:

public class FilterExample {

    public static void main(String[] args) {
        List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        // 过滤出偶数
        List<Integer> evenNumbers = filter(numbers, n -> n % 2 == 0);
        System.out.println(evenNumbers); // [2, 4, 6, 8, 10]
    }

    private static <T> List<T> filter(List<T> list, Predicate<T> predicate) {
        List<T> filteredList = new ArrayList<>();
        for (T item : list) {
            if (predicate.test(item)) {
                filteredList.add(item);
            }
        }
        return filteredList;
    }
}

Contoh sebenar:

🎜Kaedah penapis ialah Contoh a kaedah generik dalam tindakan: 🎜rrreee

Atas ialah kandungan terperinci Apakah amalan terbaik untuk kaedah generik di Jawa?. 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