scala @switch注释,它对生成的字节代码有什么影响吗?

scala docs,我理解@switch注释是告诉编译器验证匹配表达式是否已编译为tableswitch或lookupswitch,如果它编译成一系列条件表达式,则发出错误.

现在我的问题是,如果编译成功,那么与没有使用@switch注释相比,它对生成的字节代码有什么影响吗?

考虑以下两个示例代码版本,

版本1

import scala.annotation.switch

  val x = 5

  (x: @switch) match {
    case 1 => println("1")
    case 2 => println("2")
    case _ => println("something else")
  }

版本2

val x = 5

  (x) match {
    case 1 => println("1")
    case 2 => println("2")
    case _ => println("something else")
  }

是不是两个版本都会在编译时产生相同的字节代码指令?

解决方法

两个版本都会产生相同的字节码.您可以通过将一个版本粘贴到REPL中来执行此操作来测试:执行:javap – 对其进行反汇编,然后重复其他版本.

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...