例如,我有Java代码,其中我的变量由于某种原因而未使用:

int total = 0;
for (Order order : orders) { // order unused (order.size() is not a solution for me)
    if (total < LIMIT) { 
        ... total++ ...
    }
}
Queue<Integer> q = ... // x1, y1, z1, x2, y2, z2 .. 
while (q.size() >= 3) {
   int x = q.remove();
   int y = q.remove();
   int z = q.remove(); // z is unused
    ... new Point(x, y) ...
}
String s = ...;
try { 
    int i = Integer.parseInt(s);
    ... i ...
} catch (NumberFormatException ex) { //ex unused
    System.out.println("Bad number: " + s);
}

如果我不使用它,我可以避免命名变量吗?在其他一些语言中,例如Scala和Python,也可能有未命名的变量.

将某些变量标记为未使用是一个有用的工具,因为它有助于明确代码的目的.它使代码的读者和自动化linters很明显,一个特定的变量是故意不使用的.

推荐答案

Underscore character (_)

未命名的变量和模式在Java 21中作为预览特性引入,现在已经转变为Java 22每JEP 456的最终特性.

用下划线字符_(LOW LINE,Unicode代码点95十进制)表示,这些未命名的模式和变量增强了代码的清晰度和可维护性,同时降低了错误的可能性.

int acc = 0;
for (Order _ : orders) { // order -> _
    if (acc < LIMIT) {
        ... acc++ ...
    }
}
Queue<Integer> q = ... // x1, y1, z1, x2, y2, z2, ...
while (q.size() >= 3) {
   var x = q.remove();
   var y = q.remove();
   var _ = q.remove(); // z -> _
   ... new Point(x, y) ...
}
String s = ...
try {
    int i = Integer.parseInt(s);
    ... i ...
} catch (NumberFormatException _) { // ex -> _
    System.out.println("Bad number: " + s);
}
  • 未命名变量是可以初始化但不使用的变量
  • 未命名模式匹配记录组件,而不说明组件的名称或类型
  • 需要声明但不会使用的变量

Java相关问答推荐

如何为具有多对多关系的实体的给定SQL查询构建JPA规范?

流迭代列表<;对象>;上的NoSuchElementException

Spring Boot@Cachebale批注未按预期工作

在JavaFX项目中注册组合框的控件FX验证器时,模块系统出错

只需最少的代码更改即可将版本号标记添加到日志(log)

在Java Swing Paint应用程序中捕获快速鼠标移动时遇到困难

Java编译器抛出可能未正确初始化的错误?

从Spring5迁移到Spring6:无法在雅加达包中找到类

在Spring终结点中,是否可以同时以大写和小写形式指定枚举常量?

Arrays.hashcode(int[])为不同的元素提供相同的散列

无法播放音频:从资源加载库GStreamer-Lite失败

Dijkstra搜索算法的实现

Domino中不同的java.Protocol.handler.pkgs设置在XPages Java中导致错误

try 在两个不同数组的数字之间求平均值

如何使这两种方法合二为一?

带有可选部分的Java DateTimeForMatter

如何在Spring Security中设置一个任何人都可以打开的主页?

如何通过用户ID向用户发送私信

javax.crypto-密码对象-提供者服务是如何工作的?

ExecutorService:如果我向Executor提交了太多任务,会发生什么?