Java高级特性:泛型、集合框架和异常处理

Java高级特性:泛型、集合框架和异常处理

引言

在前两篇文章中,我们探讨了Java的基本语法和面向对象编程(OOP)特性。在本篇文章中,我们将深入研究Java的一些高级特性,包括泛型、集合框架和异常处理。这些特性可以帮助你编写更加灵活和健壮的代码。

泛型(Generics)

泛型允许类、接口和方法操作任意类型(类型参数),从而提高代码的重用性和类型安全性。

泛型类

定义一个泛型类时,可以使用类型参数,例如 T

java 复制代码
public class Box<T> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }

    public static void main(String[] args) {
        Box<String> stringBox = new Box<>();
        stringBox.setContent("Hello");
        System.out.println("String Box: " + stringBox.getContent());

        Box<Integer> intBox = new Box<>();
        intBox.setContent(123);
        System.out.println("Integer Box: " + intBox.getContent());
    }
}

泛型方法

泛型方法允许方法在被调用时指定类型参数:

java 复制代码
public class GenericMethodExample {
    public static <T> void printArray(T[] array) {
        for (T element : array) {
            System.out.println(element);
        }
    }

    public static void main(String[] args) {
        Integer[] intArray = {1, 2, 3, 4, 5};
        String[] strArray = {"A", "B", "C"};

        System.out.println("Integer Array:");
        printArray(intArray);

        System.out.println("String Array:");
        printArray(strArray);
    }
}

有界类型参数

你可以限制泛型类型参数的范围:

java 复制代码
public class BoundedTypeParameterExample {
    public static <T extends Number> void printNumber(T number) {
        System.out.println("Number: " + number);
    }

    public static void main(String[] args) {
        printNumber(123);  // Integer
        printNumber(45.67);  // Double
        // printNumber("Hello");  // 编译错误
    }
}

集合框架(Collections Framework)

Java集合框架提供了一组类和接口来存储和操作数据元素。常用的集合包括ListSetMap

List

List是一个有序的集合,允许重复元素。常用的实现类有ArrayListLinkedList

java 复制代码
import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        list.add("Orange");

        System.out.println("List: " + list);

        for (String fruit : list) {
            System.out.println("Fruit: " + fruit);
        }

        list.remove("Banana");
        System.out.println("List after removal: " + list);
    }
}

Set

Set是一个不允许重复元素的集合。常用的实现类有HashSetTreeSet

java 复制代码
import java.util.HashSet;
import java.util.Set;

public class SetExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("Apple");
        set.add("Banana");
        set.add("Orange");
        set.add("Apple");  // 重复元素

        System.out.println("Set: " + set);

        for (String fruit : set) {
            System.out.println("Fruit: " + fruit);
        }

        set.remove("Banana");
        System.out.println("Set after removal: " + set);
    }
}

Map

Map是一个键值对集合。常用的实现类有HashMapTreeMap

java 复制代码
import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        map.put("Orange", 3);

        System.out.println("Map: " + map);

        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }

        map.remove("Banana");
        System.out.println("Map after removal: " + map);
    }
}

异常处理(Exception Handling)

异常处理是Java中的一个重要机制,用于处理程序执行过程中发生的异常情况。Java提供了多种异常类以及try-catch语句来处理异常。

try-catch 语句

使用try-catch语句可以捕获并处理异常:

java 复制代码
public class ExceptionHandlingExample {
    public static void main(String[] args) {
        try {
            int result = divide(10, 0);
            System.out.println("Result: " + result);
        } catch (ArithmeticException e) {
            System.out.println("Exception caught: " + e.getMessage());
        }
    }

    public static int divide(int a, int b) {
        return a / b;
    }
}

多个catch块

你可以使用多个catch块来捕获不同类型的异常:

java 复制代码
public class MultipleCatchExample {
    public static void main(String[] args) {
        try {
            int[] numbers = {1, 2, 3};
            System.out.println(numbers[5]);
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Array index out of bounds: " + e.getMessage());
        } catch (Exception e) {
            System.out.println("Exception caught: " + e.getMessage());
        }
    }
}

finally块

finally块中的代码总是会执行,无论是否发生异常:

java 复制代码
public class FinallyBlockExample {
    public static void main(String[] args) {
        try {
            int result = divide(10, 0);
            System.out.println("Result: " + result);
        } catch (ArithmeticException e) {
            System.out.println("Exception caught: " + e.getMessage());
        } finally {
            System.out.println("This is the finally block.");
        }
    }

    public static int divide(int a, int b) {
        return a / b;
    }
}

自定义异常

你可以创建自己的异常类:

java 复制代码
class CustomException extends Exception {
    public CustomException(String message) {
        super(message);
    }
}

public class CustomExceptionExample {
    public static void main(String[] args) {
        try {
            checkAge(15);
        } catch (CustomException e) {
            System.out.println("Exception caught: " + e.getMessage());
        }
    }

    public static void checkAge(int age) throws CustomException {
        if (age < 18) {
            throw new CustomException("Age must be at least 18");
        }
    }
}

总结

在本篇文章中,我们深入探讨了Java的高级特性,包括泛型、集合框架和异常处理。泛型使得代码更加灵活和类型安全,集合框架提供了丰富的数据结构,而异常处理则帮助我们编写健壮的代码。掌握这些特性将极大地提升你的Java编程技能。

在接下来的文章中,我们将继续探索Java的更多高级特性和实际应用,包括并发编程、文件I/O和网络编程等。希望你能继续关注并享受学习的过程!

如果你有任何问题或需要进一步的解释,请在评论区留言。我们将尽快回复。感谢阅读!

相关推荐
聪明的墨菲特i8 分钟前
Django前后端分离基本流程
后端·python·django·web3
wainyz9 分钟前
Java NIO操作
java·开发语言·nio
工业3D_大熊14 分钟前
【虚拟仿真】CEETRON SDK在船舶流体与结构仿真中的应用解读
java·python·科技·信息可视化·c#·制造·虚拟现实
喵叔哟17 分钟前
重构代码之用委托替代继承
开发语言·重构
lzb_kkk23 分钟前
【JavaEE】JUC的常见类
java·开发语言·java-ee
SEEONTIME23 分钟前
python-24-一篇文章彻底掌握Python HTTP库Requests
开发语言·python·http·http库requests
Bearnaise23 分钟前
PointMamba: A Simple State Space Model for Point Cloud Analysis——点云论文阅读(10)
论文阅读·笔记·python·深度学习·机器学习·计算机视觉·3d
起名字真南41 分钟前
【OJ题解】C++实现字符串大数相乘:无BigInteger库的字符串乘积解决方案
开发语言·c++·leetcode
爬山算法1 小时前
Maven(28)如何使用Maven进行依赖解析?
java·maven
tyler_download1 小时前
golang 实现比特币内核:实现基于椭圆曲线的数字签名和验证
开发语言·数据库·golang