blob: 0a3fc1b08dcae297af13afc468d56c052e50904b [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= NetBeans IDE 中的标注处理程序支持 - 第一部分:使用 Project Lombok
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDE 中的标注处理程序支持 - 第一部分:使用 Project Lombok - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDE 中的标注处理程序支持 - 第一部分:使用 Project Lombok
image::images/netbeans-stamp-80-74-73.png[title="此页上的内容适用于 NetBeans IDE 7.2、7.3、7.4 和 8.0"]
* *使用支持定制标注的 Project Lombok*
为了演示定制标注如何在 NetBeans IDE 内正常工作,我们将使用 Project Lombok,它提供了自动生成多个 Java 代码元素(如 gettersetter 以及构造函数等)的便捷方式。有关其功能的详细信息,请访问 link:http://projectlombok.org/[+Project Lombok 网站+]。但是,请记住,Project Lombok 包含一些可能无法在所有开发环境中正常工作的功能。
*要学完本教程,您需要具备以下软件和资源。*
|===
|软件或资源 |要求的版本
|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |7.2, 7.3, 7.4, 8.0
|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java 开发工具包 (JDK)+] |版本 7 或 8
|link:http://code.google.com/p/projectlombok/downloads/list[+lombok.jar+] |v1.12.4 或更新版本
|===
== 创建新的 Java 项目
在本练习中,将创建一个简单的 Java 项目,以及名为 ``MyBooks.java`` 的类,用于在操作中演示标注。
1. 从主菜单中选择 *File > New Project*(文件 > 新建项目)以打开新建项目向导。
2. "Java" 类别中选择 "Java Application"Java 应用程序)项目类型。单击 "Next"(下一步)。
3. 在向导的 "Name and Location"(名称和位置)页中,键入 * ``TestAnn`` * 作为项目名称。
4. "Create Main Class"(创建主类)字段中键入 * ``testann.TestBooks`` *,以替换默认的类名。单击 "Finish"(完成)。
image::images/newproj.png[title="在 NetBeans IDE 中创建新 Java 项目"]
单击 "Finish"(完成),此时 IDE 将创建 Java 应用程序项目,并在编辑器中打开 ``TestBooks.java`` 类。您可以看到,新项目现在显示在 "Projects"(项目)窗口中,并且 ``TestBooks.java`` 类位于 "Source Packages"(源包)节点下的 ``testann`` 包中。
. "Projects"(项目)窗口中,右键单击 ``testann`` 包节点,然后选择 "New"(新建)> "Java Class"Java 类)。
. 键入 * ``MyBooks`` * 作为类名,并确认将在 ``testann`` 包中创建类。单击 "Finish"(完成)。
单击 "Finish"(完成)后,IDE 将在编辑器中打开新类。
. 在源代码编辑器中,将以下三个字段添加到 ``MyBooks.java`` 中。
[source,java]
----
package testann;
public class MyBooks {
*private int year; //fields
private String title;
private String author;*
}
----
. 将插入光标放在类声明中,然后按 Ctrl-空格组合键,以调用编辑器的代码完成支持。
. 在代码完成列表中选择 ``MyBooks (int year, String title, String author) - generate`` MyBooks (int year, String title, String author) - 生成),以生成 ``MyBooks.java`` 的构造函数。
image::images/generate-constructor.png[title="用于生成构造函数的代码完成功能"]
. 保存所做的更改。
== 为项目启用定制标注 (lombok.jar)
在本练习中,将修改项目的 "Properties"(属性)窗口,以便将库添加到项目的类路径中,并在编辑器中启用标注处理功能。
1. 下载 link:http://code.google.com/p/projectlombok/downloads/list[+lombok.jar+] 文件并将其保存在系统上。
2. 右键单击 ``TestAnn`` 项目节点,然后选择 "Properties"(属性)。
3. "Project Properties"(项目属性)对话框中,选择 "Libraries"(库)类别。
4. 单击 "Compile"(编译)标签中的 "Add JAR/Folder"(添加 JAR/文件夹),找到您已下载的 ``lombok.jar`` 文件。
image::images/properties1.png[title=""Properties"(属性)窗口中的 "Libraries"(库)类别"]
"Compile"(编译)标签上添加的资源对应于 link:http://download.oracle.com/javase/6/docs/technotes/tools/windows/javac.html#options[+Java 编译器+]的 ``-classpath`` 选项。鉴于 ``lombok.jar`` 是一个同时包含标注定义和标注处理程序的单一 JAR 文件,您应该在 "Compile"(编译)标签中将其添加到项目的类路径中。
. "Project Properties"(项目属性)窗口中,选择 "Compiling"(编译)类别。
. 确认选中了 "Enable Annotation Processing"(启用标注处理)复选框(默认为启用),然后选择 "Enable Annotation Processing in Editor"(在编辑器中启用标注处理)复选框。
image::images/properties2.png[title=""Properties"(属性)窗口中的 "Compiling"(编译)类别"]
"Enable Annotation Processing"(启用标注处理)复选框使构建和编译项目期间可以进行标注处理。如果未选中该复选框,则会将 ``-proc:none`` 选项传递给 Java 编译器,因此,编译时不进行任何标注处理。因此,如果要处理代码中的标注,则必须选中 "Enable Annotation Processing"(启用标注处理)复选框。
通过选中 "Enable Annotation Processing in Editor"(在编辑器中启用标注处理)复选框,可在编辑器中查看标注处理结果。标注处理程序生成的其他任何工件(类、方法、字段等)均会显示在 IDE 编辑器中,并且可用于代码完成、导航器、跳转类型、查找使用实例等。
. "Project Properties"(项目属性)窗口单击 "OK"(确定),返回到 ``MyBooks.java`` 文件。
如果在 "Projects"(项目)窗口中展开 "Libraries"(库)节点,则可以看到 ``lombok.jar`` 现在被列为项目库。
image::images/projects-window.png[title=""Projects"(项目)窗口中的 "Libraries"(库)节点"]
== 编写使用 Lombok 定制标注的应用程序
1. ``MyBooks.java`` 文件的 ``MyBooks`` 类声明前键入 ``@Data`` ``@Data`` 是一个为以下 Java 类生成样板代码的标注:所有字段的 getter、非最终字段的 setter 以及与调用该类字段相应的 ``toString`` ``equals`` ``hashCode`` 实现。
要了解有关 Project Lombok 支持的标注的详细信息,请参见 Lombok link:http://projectlombok.org/features/index.html[+功能概述+]。
. 单击编辑器左旁注中的提示,然后为 ``lombok.Data`` 添加 import
image::images/import-lombok.png[title="编辑器中导入 lombok 的提示"]
编辑器中的生成代码应该类似于下面的示例。
[source,java]
----
package testann;
import lombok.Data;
@Data
public class MyBooks {
private int year; //fields
private String title;
private String author;
public MyBooks(int year, String title, String author) {
this.year = year;
this.title = title;
this.author = author;
}
}
----
注:已生成所需的代码工件(如 gettersettertoString 等),并且可以在 "Navigator"(导航器)窗口中看到它们。 ``@Data`` 标注生成了典型类所需的所有样板代码。
image::images/nav.png[title="显示项目成员的 "Navigator"(导航器)窗口"]
还可以调用代码完成窗口(Ctrl-空格键),然后查看生成的工件是否可供选择。现在,我们看到项目已编译,生成的工件可以通过程序的其他部分调用。
. 打开包含 _main_ 方法的 ``TestBooks.java`` 文件,并添加下面的代码(粗体)以创建 ``MyBooks`` 类的新对象。
[source,java]
----
package testann;
public class TestBooks {
public static void main(String[] args) {
*MyBooks books = new MyBooks(2009, "My Beautiful Dream", "John Smith");*
}
}
----
. 添加以下代码,以输出 ``books`` 变量的值。
要返回值,我们调用 ``lombok.jar`` 自动生成的 getter 方法。键入时,请注意代码完成窗口是否提供了自动生成的工件。
[source,java]
----
package testann;
public class TestBooks {
public static void main(String[] args) {
MyBooks books = new MyBooks(2009, "My Beautiful Dream", "John Smith");
*System.out.println("Year: " + books.getYear() + ", Title: " + books.getTitle() + ", Author: " + books.getAuthor());*
}
}
----
. 保存所做的更改。
. "Projects"(项目)窗口中,右键单击项目节点,然后选择 "Run"(运行)(F6 键)。
运行应用程序时,应会显示以下输出,说明应用程序编译成功。
image::images/output.png[title="运行应用程序之后的 "Output"(输出)窗口"]
您可以看到,Lombok 标注处理程序生成的工件可以从程序的其他部分访问。
== 后续步骤
* Java SE 文档 - link:http://download.oracle.com/javase/6/docs/technotes/guides/language/annotations.html[+标注+]
* Java SE 教程 - link:http://download.oracle.com/javase/tutorial/java/javaOO/annotations.html[+标注+]
link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20the%20Annotation%20Processors%20Support%20in%20NetBeans%20IDE[+发送有关此教程的反馈意见+]