72. Java 嵌套类 - 局部类

2025-05-08  本文已影响0人  Cache技术分享

72. Java 嵌套类 - 局部类

局部类(Local Classes)介绍

局部类是定义在某个代码块(例如方法、构造器或代码块)内部的类,其作用范围仅限于声明它的代码块内。你可以简单地把局部类理解为“方法内部的私有小工具”,它通常用于封装一些辅助逻辑,使得代码更加清晰,而这些逻辑不需要在整个类中使用。


1. 局部类与成员内部类的区别


2. 局部类示例:验证电话号码格式

需求描述:

代码示例解析:

代码实现:

public class LocalClassExample {

    static String regularExpression = "[^0-9]"; // 匹配非数字字符的正则表达式

    public static void validatePhoneNumber(String phoneNumber1, String phoneNumber2) {
        final int numberLength = 10; // 规定电话号码长度

        // 在方法内部定义局部类
        class PhoneNumber {
            String formattedPhoneNumber = null;

            // 构造方法:格式化电话号码
            PhoneNumber(String phoneNumber) {
                // 去掉所有非数字字符
                String currentNumber = phoneNumber.replaceAll(regularExpression, "");
                // 判断长度是否为 10
                if (currentNumber.length() == numberLength) {
                    formattedPhoneNumber = currentNumber;
                } else {
                    formattedPhoneNumber = null;
                }
            }

            public String getNumber() {
                return formattedPhoneNumber;
            }
        }

        // 创建局部类的实例
        PhoneNumber myNumber1 = new PhoneNumber(phoneNumber1);
        PhoneNumber myNumber2 = new PhoneNumber(phoneNumber2);

        // 输出验证结果
        if (myNumber1.getNumber() == null) {
            System.out.println("First number is invalid");
        } else {
            System.out.println("First number is " + myNumber1.getNumber());
        }

        if (myNumber2.getNumber() == null) {
            System.out.println("Second number is invalid");
        } else {
            System.out.println("Second number is " + myNumber2.getNumber());
        }
    }

    public static void main(String... args) {
        validatePhoneNumber("123-456-7890", "456-7890");
    }
}

运行结果:

First number is 1234567890
Second number is invalid

解释:


3. 局部类的特性


4. 局部类的应用场景

但如果需要的类在多个方法中共享或逻辑复杂,则更适合使用成员内部类或独立类。


5. 总结

通过这个示例,你可以清晰地看到局部类如何帮助我们在方法内部处理复杂逻辑,同时避免将这些逻辑暴露到全局范围。

上一篇 下一篇

猜你喜欢

热点阅读