【发布时间】:2013-05-26 03:24:28
【问题描述】:
不懂Java,开始学Scala。什么是注解,它们有什么用?
【问题讨论】:
标签: scala annotations
不懂Java,开始学Scala。什么是注解,它们有什么用?
【问题讨论】:
标签: scala annotations
注释是附加到类/方法/字段的元数据,框架可以使用它来确定围绕这些类/方法/字段所需的功能。
常见用途包括:
注解是 Java 的一个特性,因此在 Scala 和 Java 中都可用。
【讨论】:
通常,注释可以将信息与定义相关联,例如类、方法或变量的定义。注解可以被编译器使用或被程序的其他部分访问,例如在爪哇中:
@SuppressWarnings("deprecation")
void useADeprecatedMethod() {
someObj.someDeprecatedMethod();
}
这里,@SuppressWarnings 注释告诉编译器不要发出关于 useADeprecatedMethod's 使用 someDeprecatedMethod 的警告。
Java 世界中的其他用途包括向类添加有关它如何映射到关系数据库以供 OR 映射器(如 Hibernate)使用的信息。
在 Scala 中,许多在 Java 中是关键字或标记接口的东西在 Scala 中被实现为注解。例如@throws,@serializable。
下面是一个示例,显示了 Scala 和 Java 在注释的帮助下协同工作。想象一下,我们要在 Scala 中定义一个 Person 类。当我们在 Java 中使用 Person 时,Java 程序员会期望我们有 setName 和 getName 方法,这是 Java 中的 bean 约定。这可以使用 @BeanProperty 注释来实现:
Scala 中的 Person 类:
class Person {
@BeanProperty
var name = "Joe Bloggs"
}
在爪哇中:
public void printPerson(Person p) {
// Scala added the getName method for us
System.out.println(p.getName());
}
【讨论】:
Java 注释的一个有趣方面是控制它们的保留.定义注解类型(实现 Annotation 接口的 Java 类)时,其属性之一是其 RetentionPolicy,其中之一:
【讨论】: