@@ -14,7 +14,7 @@ next-page: default-parameter-values
14
14
previous-page : by-name-parameters
15
15
---
16
16
17
- 注解将元信息与定义相关联。 例如,方法之前的注解 ` @deprecated ` 会导致编译器在该方法被调用时打印警告信息 。
17
+ 注解将元信息与定义相关联。 例如,方法之前的注解 ` @deprecated ` 会导致编译器在该方法被使用时打印警告信息 。
18
18
```
19
19
object DeprecationDemo extends App {
20
20
@deprecated("deprecation message", "release # which deprecates method")
@@ -25,7 +25,7 @@ object DeprecationDemo extends App {
25
25
```
26
26
这个程序可以编译,但编译器将打印一个警告信息: "there was one deprecation warning"。
27
27
28
- 注解子句适用于其后的第一个定义或声明。 在定义和声明之前可以有多个注解子句。 这些子句的顺序并不重要 。
28
+ 注解作用于其后的第一个定义或声明。 在定义和声明之前可以有多个注解。 这些注解的顺序并不重要 。
29
29
30
30
## 确保编码正确性的注解
31
31
如果不满足条件,某些注解实际上会导致编译失败。 例如,注解 ` @tailrec ` 确保方法是 [ 尾递归] ( https://en.wikipedia.org/wiki/Tail_call ) 。 尾递归可以保持内存需求不变。 以下是它在计算阶乘的方法中的用法:
@@ -57,11 +57,11 @@ def factorial(x: Int): Int = {
57
57
58
58
59
59
## 影响代码生成的注解
60
- 像 ` @inline ` 这样的注解会影响生成的代码(即你的 jar 文件可能与你没有使用注解时有不同的字节)。 内联表示在调用点插入被调用方法体中的代码。 生成的字节码更长,但有希望能运行得更快。 使用注解 ` @inline ` 并不能确保方法内联,但是当且仅当满足某些生成代码大小的启发式算法时,它会触发编译器执行此操作 。
60
+ 像 ` @inline ` 这样的注解会影响生成的代码(即你的 jar 文件可能与你没有使用注解时有不同的字节)。 内联表示在调用点插入被调用方法体中的代码。 生成的字节码更长,但有希望能运行得更快。 使用注解 ` @inline ` 并不能确保方法内联,当且仅当满足某些生成代码大小的启发式算法时,它才会触发编译器执行此操作 。
61
61
62
62
### Java 注解 ###
63
63
在编写与 Java 互操作的 Scala 代码时,注解语法中存在一些差异需要注意。
64
- ** 注意:** 确保你在使用 ` -target:jvm-1.8 ` 选项时使用 Java 注解。
64
+ ** 注意:** 确保你在开启 ` -target:jvm-1.8 ` 选项时使用 Java 注解。
65
65
66
66
Java 注解有用户自定义元数据的形式 ,参考 [ annotations] ( https://docs.oracle.com/javase/tutorial/java/annotations/ ) 。 注解的一个关键特性是它们依赖于指定 name-value 对来初始化它们的元素。 例如,如果我们需要一个注解来跟踪某个类的来源,我们可以将其定义为
67
67
```
@@ -117,7 +117,7 @@ class MyScalaClass ...
117
117
public class MyClass extends HisClass ...
118
118
```
119
119
120
- Scala 在这方面提供了更强的灵活性
120
+ Scala 在这方面提供了更大的灵活性
121
121
122
122
```
123
123
@SourceURL("http://coders.com/",
0 commit comments