别再写“土味”Java了!进阶小技巧,让代码优雅到起飞

40 阅读2分钟

哈喽各位掘金的小伙伴~ 写Java时总觉得自己的代码又长又冗余?其实几个进阶小技巧就能让代码颜值和效率双提升!今天分享3个进阶偏基础的实用知识点,附极简代码示例,新手也能秒上手👇

1. 方法引用:简化Lambda,代码更清爽

Lambda表达式已经够简洁了?方法引用能让它更“瘦身”,直接复用已有方法,告别冗余的箭头函数!

核心用法:当Lambda体只调用一个已有方法时,用 类名::方法名 替代

import java.util.Arrays;
import java.util.List;

public class MethodRefDemo {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

        // Lambda写法
        names.forEach(name -> System.out.println(name));
        
        // 方法引用写法:更简洁,可读性拉满
        names.forEach(System.out::println);

        // 再举一例:集合转大写(结合Stream)
        names.stream()
             .map(String::toUpperCase) // 替代 s -> s.toUpperCase()
             .forEach(System.out::println);
    }
}

 

2. 可变参数:告别数组重载,传参更灵活

还在为不同数量的参数写多个重载方法?可变参数( ... )一招搞定,支持传入任意数量的同类型参数!

核心用法:参数类型后加 ... ,本质是数组,但传参更方便

public class VarargsDemo {
    // 可变参数方法:计算多个整数的和
    public static int sum(int... nums) {
        int total = 0;
        for (int num : nums) {
            total += num;
        }
        return total;
    }

    public static void main(String[] args) {
        // 可以传任意数量的参数,甚至不传
        System.out.println(sum(1, 2)); // 输出 3
        System.out.println(sum(1, 2, 3, 4)); // 输出 10
        System.out.println(sum()); // 输出 0
    }
}
 

注意:可变参数必须是方法的最后一个参数,且一个方法只能有一个可变参数。

3. try-with-resources:自动关闭资源,告别内存泄漏

手动关闭流、连接等资源容易忘? try-with-resources 语法糖能自动关闭实现了 AutoCloseable 接口的资源,安全又省心!

核心用法:将资源声明在 try() 中,代码块结束后自动关闭

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class TryWithResourcesDemo {
    public static void main(String[] args) {
        // 传统写法:需要手动close,容易遗漏
        BufferedReader br1 = null;
        try {
            br1 = new BufferedReader(new FileReader("test.txt"));
            System.out.println(br1.readLine());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br1 != null) br1.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        // 进阶写法:try-with-resources自动关闭资源
        try (BufferedReader br2 = new BufferedReader(new FileReader("test.txt"))) {
            System.out.println(br2.readLine());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

总结

这3个小技巧都是Java进阶的“基础款”,用起来不复杂,但能让代码质量提升一大截:

1. 方法引用:简化Lambda,代码更简洁

2. 可变参数:灵活传参,减少重载方法

3. try-with-resources:自动关资源,避免内存泄漏