- 浏览: 161514 次
- 来自: ...
文章分类
- 全部博客 (110)
- 网络 (3)
- window (1)
- eclipse (2)
- mysql (3)
- java (43)
- spring (2)
- memcahe (4)
- kestrel (1)
- linux (19)
- maven (1)
- 总结 (1)
- ActiveMQ (1)
- 线程 (6)
- nio (7)
- java pool (1)
- IO (1)
- 架构 (1)
- Hadoop (1)
- Storm (1)
- zookeeper (3)
- 工作进程 (1)
- epoll (3)
- nginx (4)
- uml (1)
- 分布式 (1)
- RMI (4)
- redis (1)
- shell (4)
- 黄金文档 (1)
- office (2)
- linux_setup (1)
- visio (1)
- BIOS (1)
- 回调 (1)
- jvm (1)
- resin (1)
- ssd (0)
- xmpp (1)
最新评论
-
qxjandyc:
hjjjjjjjjjjjjjjjjjjjjjj
(emoji表情) unicode5与unicode6互换 -
一个人旅行:
写的不错哦
(emoji表情) unicode5与unicode6互换
http://www.iteye.com/topic/165316
从JDK5开始提供名为Annotation(注释)的功能,它被定义为JSR-175规范。注释是以“@注释名”在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked")。注释可以附加在package, class, method, field等上面,相当于给它们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。如果没有外部解析工具等对其加以解析和处理的情况,本身不会对Java的源代码或class文件等产生任何影响,也不会对它们的执行产生任何影响。
元数据的作用,大致可分为三种:编写文档,通过代码里标识的元数据生成文档;代码分析,通过代码里标识的元数据对代码进行分析;编译检查,通过代码里标识的元数据让编译器能实现基本的编译检查。
JDK5内置的基本注释
JDK5内置了一些常用的注释,可以在编译时帮我们捕获部分编译错误,及提示信息,下面介绍下这些注释的用法:
1、@Override定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注解但没有重写超类方法,则编译器会生成一条错误消息。例如我们为某类重写toString()方法却写成了tostring(),并且我们为该方法添加了@Override注释;代码如下:
Java代码
public class OverrideDemo {
@Override
public String tostring() {
return super.toString();
}
}
在编译时,会提示以下错误信息:
引用
OverrideTest.java:4: 方法未覆盖其父类的方法
@Override
^1 错误
2、@Deprecated定义在java.lang.Deprecated中,此注释可用于修辞方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告。使用@Deprecated的示例代码如下:
Java代码
public class DeprecatedDemo {
public static void main(String[] args) {
DeprecatedClass.DeprecatedMethod();
}
}
class DeprecatedClass {
@Deprecated
public static void DeprecatedMethod() {
// TODO
}
}
在编译时,会得到以下提示信息:
引用
注意:DeprecatedDemo.java 使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
如果在编译时添加-Xlint:deprecation参数,我们能更清楚的看到该警告的详细信息,如下:
引用
DeprecatedDemo.java:6: 警告:[deprecation] SomeClass 中的 DeprecatedMethod() 已过时
SomeClass.DeprecatedMethod();
^1 警告
要注意@Deprecated与@deprecated的区别,@deprecated是为了生成文档的需要,例如:
Java代码
class DeprecatedClass {
/**
* @deprecated 此方法已过时,不建议使用
*/
@Deprecated
public static void DeprecatedMethod() {
// TODO
}
}
3、@SuppressWarnings定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息。与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数值都是已经定义好了的,我们选择性的使用就好了,参数如下:
通过上面的表格,你应该了解到每个参数的用意了,下面我就以一个常用的参数unchecked为例,为你展示如何使用@SuppressWarnings注释,示例代码如下:
Java代码
import java.util.List;
import java.util.ArrayList;
public class SuppressWarningsDemo {
public static List cache = new ArrayList();
//@SuppressWarnings(value = "unchecked")
public void add(String data) {
cache.add(data);
}
}
当我们不使用@SuppressWarnings注释时,编译器就会有如下提示:
引用
注意:SuppressWarningsDemo.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
下面我们去掉@SuppressWarnings(value="unchecked")这一行的注释符“//”,它会屏蔽编译时的警告信息,这也就是它所要达到的目的。
另外,由于@SuppressWarnings注释只有一个参数,并且参数名为value,所以我们可以将上面一句注释简写为
@SuppressWarnings("unchecked");
同时参数value可以取多个值如:
@SuppressWarnings(value={"unchecked", "deprecation"})
或@SuppressWarnings({"unchecked", "deprecation"})。
自定义Annotation注释
1、注释annotation与接口的异同:
因为annotation类型是一个非凡的接口,所以它与接口之间存在着某些差异:
A. Annotation类型使用关键字@interface而不是interface,这个关键字声明隐含了一个信息,它是继承了java.lang.annotation.Annotation接口,并非声明了一个interface。
B. Annotation类型的方法定义是独特的、受限制的,方法必须声明为无参数、无异常抛出的。这些方法定义了annotation的成员:方法名成为了成员名,而方法返回值成为了成员的类型。而方法返回值类型必须为primitive类型、Class类型、枚举类型、annotation类型或者由前面类型之一作为元素的一维数组。方法的后面可以使用default和一个默认数值来声明成员的默认值,null不能作为成员默认值,这与我们在非annotation类型中定义方法有很大不同。
C. Annotation类型又与接口有着近似之处,它们可以定义常量、静态成员类型(比如枚举类型定义)。Annotation类型也可以如接口一般被实现或者继承。
2、自定义注释的实例:
下面,我们将看到如何定义annotation类型的例子。它展示了annotation类型声明以及
Java代码
@interface与interface之间的不同:
import java.lang.annotation.*;
/**
* 使用annotation来描述那些被标注的成员是不稳定的,需要更改
*/
public @interface Unstable {
}
下面的另一个例子只定义了一个成员。并通过将这个成员命名为value,使我们可以方便的使用这种annotation的快捷声明方式:
Java代码
/**
* 使用Author这个annotation定义在程序中指出代码的作者
*/
public @interface Author {
/** 返回作者名 */
String value();
}
以下的例子更加复杂。Reviews annotation类型只有一个成员,但是这个成员的类型是复杂的:由Review annotation组成的数组。Review annotation类型有3个成员:枚举类型成员grade、表示Review名称的字符串类型成员Reviewer、具有默认值的字符串类型成员 Comment。
Java代码
/**
* Reviews annotation类型只有一个成员,
* 但是这个成员的类型是复杂的:由Review annotation组成的数组
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface Reviews {
Review[] value();
}
/**
* Review annotation类型有3个成员:
* 枚举类型成员grade、
* 表示Review名称的字符串类型成员Reviewer、
* 具有默认值的字符串类型成员Comment。
*/
public @interface Review {
// 内嵌的枚举类型
public static enum Grade { EXCELLENT, SATISFACTORY, UNSATISFACTORY };
// 下面的方法定义了annotation的成员
Grade grade();
String reviewer();
String comment() default "";
}
最后,我们来定义一个annotation方法用于罗列出类运行中所有的unchecked异常。这个 annotation类型将一个数组作为了唯一的成员。数组中的每个元素都是异常类。为了加强对未检查的异常(此类异常都是在运行时抛出)进行报告,我们可以在代码中对异常的类型进行限制:
Java代码
public @interface UncheckedExceptions {
Class[] value();
}
Meta-Annotation类型:
Annotation 类型可以被它们自己所标注。Java5.0定义了4个标准的meta-annotation类型,分别是:Target、Retention、Documented、Inherited,它们被用来提供对其它annotation类型作说明。 这些类型和它们所支持的类在java.lang.annotation包中可以找到。
@Target的用法:指示注释类型所适用的程序元素的种类。如果注释类型声明中不存在 Target 元注释,则声明的类型可以用在任一程序元素上。如果存在这样的元注释,则编译器强制实施指定的使用限制。 例如,以下这个注释只能用来声明方法:
Java代码
@Target(ElementType.METHOD)
public @interface MyAnnotation {
...
}
java.lang.annotation.ElementType是一个枚举类型,它具有以下定义:
@Retention的用法:指示注释类型的注释要保留多久。如果注释类型声明中不存在 Retention 注释,则保留策略默认为 RetentionPolicy.CLASS,例如:
Java代码
@ Retention(RetentionPolicy.CLASS)
public @interface MyAnnotation {
...
}
java.lang.annotation.RetentionPolicy是一个枚举类型,它具有以下定义:
@Documented的用法:指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化。应使用此类型来注释这些类型的声明:其注释会影响由其客户端注释的元素的使用。如果类型声明是用 Documented 来注释的,则其注释将成为注释元素的公共 API 的一部分。Documented是一个没有成员的注释。
@Inherited的用法:指示注释类型自动被子类继承。 Inherited也是一个没有成员的注释。
注意,如果使用@Inherited注释类以外的任何事物都是无效的。还要注意,此元注释仅对从超类继承注释有效;对已实现接口的注释无效
从JDK5开始提供名为Annotation(注释)的功能,它被定义为JSR-175规范。注释是以“@注释名”在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked")。注释可以附加在package, class, method, field等上面,相当于给它们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。如果没有外部解析工具等对其加以解析和处理的情况,本身不会对Java的源代码或class文件等产生任何影响,也不会对它们的执行产生任何影响。
元数据的作用,大致可分为三种:编写文档,通过代码里标识的元数据生成文档;代码分析,通过代码里标识的元数据对代码进行分析;编译检查,通过代码里标识的元数据让编译器能实现基本的编译检查。
JDK5内置的基本注释
JDK5内置了一些常用的注释,可以在编译时帮我们捕获部分编译错误,及提示信息,下面介绍下这些注释的用法:
1、@Override定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注解但没有重写超类方法,则编译器会生成一条错误消息。例如我们为某类重写toString()方法却写成了tostring(),并且我们为该方法添加了@Override注释;代码如下:
Java代码
public class OverrideDemo {
@Override
public String tostring() {
return super.toString();
}
}
在编译时,会提示以下错误信息:
引用
OverrideTest.java:4: 方法未覆盖其父类的方法
@Override
^1 错误
2、@Deprecated定义在java.lang.Deprecated中,此注释可用于修辞方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告。使用@Deprecated的示例代码如下:
Java代码
public class DeprecatedDemo {
public static void main(String[] args) {
DeprecatedClass.DeprecatedMethod();
}
}
class DeprecatedClass {
@Deprecated
public static void DeprecatedMethod() {
// TODO
}
}
在编译时,会得到以下提示信息:
引用
注意:DeprecatedDemo.java 使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
如果在编译时添加-Xlint:deprecation参数,我们能更清楚的看到该警告的详细信息,如下:
引用
DeprecatedDemo.java:6: 警告:[deprecation] SomeClass 中的 DeprecatedMethod() 已过时
SomeClass.DeprecatedMethod();
^1 警告
要注意@Deprecated与@deprecated的区别,@deprecated是为了生成文档的需要,例如:
Java代码
class DeprecatedClass {
/**
* @deprecated 此方法已过时,不建议使用
*/
@Deprecated
public static void DeprecatedMethod() {
// TODO
}
}
3、@SuppressWarnings定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息。与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数值都是已经定义好了的,我们选择性的使用就好了,参数如下:
通过上面的表格,你应该了解到每个参数的用意了,下面我就以一个常用的参数unchecked为例,为你展示如何使用@SuppressWarnings注释,示例代码如下:
Java代码
import java.util.List;
import java.util.ArrayList;
public class SuppressWarningsDemo {
public static List cache = new ArrayList();
//@SuppressWarnings(value = "unchecked")
public void add(String data) {
cache.add(data);
}
}
当我们不使用@SuppressWarnings注释时,编译器就会有如下提示:
引用
注意:SuppressWarningsDemo.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
下面我们去掉@SuppressWarnings(value="unchecked")这一行的注释符“//”,它会屏蔽编译时的警告信息,这也就是它所要达到的目的。
另外,由于@SuppressWarnings注释只有一个参数,并且参数名为value,所以我们可以将上面一句注释简写为
@SuppressWarnings("unchecked");
同时参数value可以取多个值如:
@SuppressWarnings(value={"unchecked", "deprecation"})
或@SuppressWarnings({"unchecked", "deprecation"})。
自定义Annotation注释
1、注释annotation与接口的异同:
因为annotation类型是一个非凡的接口,所以它与接口之间存在着某些差异:
A. Annotation类型使用关键字@interface而不是interface,这个关键字声明隐含了一个信息,它是继承了java.lang.annotation.Annotation接口,并非声明了一个interface。
B. Annotation类型的方法定义是独特的、受限制的,方法必须声明为无参数、无异常抛出的。这些方法定义了annotation的成员:方法名成为了成员名,而方法返回值成为了成员的类型。而方法返回值类型必须为primitive类型、Class类型、枚举类型、annotation类型或者由前面类型之一作为元素的一维数组。方法的后面可以使用default和一个默认数值来声明成员的默认值,null不能作为成员默认值,这与我们在非annotation类型中定义方法有很大不同。
C. Annotation类型又与接口有着近似之处,它们可以定义常量、静态成员类型(比如枚举类型定义)。Annotation类型也可以如接口一般被实现或者继承。
2、自定义注释的实例:
下面,我们将看到如何定义annotation类型的例子。它展示了annotation类型声明以及
Java代码
@interface与interface之间的不同:
import java.lang.annotation.*;
/**
* 使用annotation来描述那些被标注的成员是不稳定的,需要更改
*/
public @interface Unstable {
}
下面的另一个例子只定义了一个成员。并通过将这个成员命名为value,使我们可以方便的使用这种annotation的快捷声明方式:
Java代码
/**
* 使用Author这个annotation定义在程序中指出代码的作者
*/
public @interface Author {
/** 返回作者名 */
String value();
}
以下的例子更加复杂。Reviews annotation类型只有一个成员,但是这个成员的类型是复杂的:由Review annotation组成的数组。Review annotation类型有3个成员:枚举类型成员grade、表示Review名称的字符串类型成员Reviewer、具有默认值的字符串类型成员 Comment。
Java代码
/**
* Reviews annotation类型只有一个成员,
* 但是这个成员的类型是复杂的:由Review annotation组成的数组
*/
@Retention(RetentionPolicy.RUNTIME)
public @interface Reviews {
Review[] value();
}
/**
* Review annotation类型有3个成员:
* 枚举类型成员grade、
* 表示Review名称的字符串类型成员Reviewer、
* 具有默认值的字符串类型成员Comment。
*/
public @interface Review {
// 内嵌的枚举类型
public static enum Grade { EXCELLENT, SATISFACTORY, UNSATISFACTORY };
// 下面的方法定义了annotation的成员
Grade grade();
String reviewer();
String comment() default "";
}
最后,我们来定义一个annotation方法用于罗列出类运行中所有的unchecked异常。这个 annotation类型将一个数组作为了唯一的成员。数组中的每个元素都是异常类。为了加强对未检查的异常(此类异常都是在运行时抛出)进行报告,我们可以在代码中对异常的类型进行限制:
Java代码
public @interface UncheckedExceptions {
Class[] value();
}
Meta-Annotation类型:
Annotation 类型可以被它们自己所标注。Java5.0定义了4个标准的meta-annotation类型,分别是:Target、Retention、Documented、Inherited,它们被用来提供对其它annotation类型作说明。 这些类型和它们所支持的类在java.lang.annotation包中可以找到。
@Target的用法:指示注释类型所适用的程序元素的种类。如果注释类型声明中不存在 Target 元注释,则声明的类型可以用在任一程序元素上。如果存在这样的元注释,则编译器强制实施指定的使用限制。 例如,以下这个注释只能用来声明方法:
Java代码
@Target(ElementType.METHOD)
public @interface MyAnnotation {
...
}
java.lang.annotation.ElementType是一个枚举类型,它具有以下定义:
@Retention的用法:指示注释类型的注释要保留多久。如果注释类型声明中不存在 Retention 注释,则保留策略默认为 RetentionPolicy.CLASS,例如:
Java代码
@ Retention(RetentionPolicy.CLASS)
public @interface MyAnnotation {
...
}
java.lang.annotation.RetentionPolicy是一个枚举类型,它具有以下定义:
@Documented的用法:指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化。应使用此类型来注释这些类型的声明:其注释会影响由其客户端注释的元素的使用。如果类型声明是用 Documented 来注释的,则其注释将成为注释元素的公共 API 的一部分。Documented是一个没有成员的注释。
@Inherited的用法:指示注释类型自动被子类继承。 Inherited也是一个没有成员的注释。
注意,如果使用@Inherited注释类以外的任何事物都是无效的。还要注意,此元注释仅对从超类继承注释有效;对已实现接口的注释无效
发表评论
-
java final关键字
2012-10-21 21:20 1050Java中的final关键字通常的指的是“这是无法改变的”。它 ... -
Java:List中的toArray()的使用方法
2012-10-16 17:15 1065http://webservices.ctocio.com.c ... -
jvm 参数设置 -D
2012-10-16 14:06 9461、log4j 配置文件 -Dlog4j.configurat ... -
Java核心技术(第8版) – 读书笔记
2012-09-03 15:15 789http://www.coder4.com/archives/ ... -
线程123总结
2012-09-02 22:34 773线程同步的真实意思,其实是“排队”:几个线程之间要排队,一个一 ... -
Arraylist与linkedlist的区别
2012-08-31 16:44 764List: 有顺序的,元素可以重复 遍历:for 迭代 排 ... -
Java RMI之HelloWorld篇
2012-08-29 11:53 585http://www.cnblogs.com/ninahan0 ... -
Comparator和Comparable在排序中 区别
2012-08-21 09:40 744当需要排序的集合或数组不是单纯的数字类型的时候,通常可以使用C ... -
Spring Bean相关的接口、aware接口、FactoryBean
2012-08-02 14:57 37191、 package spring.beansandcon ... -
关系 UML 说明
2012-08-01 22:56 777关联是类之间的一种关系,例如老师教学生,老公和老婆,水壶装水等 ... -
replace和replaceAll 区别
2012-08-01 14:59 813replace和replaceAll是JAVA中常用的替换字符 ... -
JAVA ANNOTATION详解
2012-08-01 14:56 748http://www.cnblogs.com/phoebus0 ... -
Java中的Enum用法介绍
2012-07-27 09:39 984http://blog.sina.com.cn/s/blog_ ... -
获取本地ip
2012-07-26 09:09 892/** * @Title: getLocalIp ... -
动态代理
2012-07-25 10:29 720http://blog.csdn.net/cz_hyf/art ... -
NIO揭秘-1
2012-07-24 11:15 716http://my.oschina.net/zhangya/b ... -
FileChannel类的简单用法
2012-07-23 20:12 888http://blog.163.com/yf_198407/b ... -
JDK5.0 新特性
2012-07-23 17:30 7531.AutoBoxing 原来int是非Object,在JDK ... -
java jdk5 新特性 可变参数
2012-07-23 17:28 696java jdk5 的新特性:可变参数 Java代码 ... -
java泛型
2012-07-22 22:25 799http://www.cnblogs.com/panjun-D ...
相关推荐
总的来说,JDK 1.5(Java 5.0)的新特性极大地提高了Java的生产力和代码质量。从泛型到增强的for循环,再到注解和枚举,这些改进都让Java开发者能够编写出更安全、更易于维护的代码。在实际开发中,理解并充分利用...
Java 1.5 引入了一种新的元编程机制——注解(Annotation),极大地增强了代码的可读性和可维护性。注解是一种在代码中添加元数据的方式,它允许程序员在源代码上添加一些信息,这些信息可以被编译器或运行时环境...
全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...
### JDK注释详解:深入理解Java中的注解 在Java开发中,注解(Annotation)是一种重要的元数据机制,用于向编译器、工具或框架提供额外的信息,从而增强代码的功能性和可读性。本文将从JDK源注释出发,深入解析三种...
5. **新引入的包**:如`java.nio.file.Paths`和`java.nio.file.FileSystems`,提供对文件系统路径的操作。 6. **I/O和NIO包**:如`java.nio`和`java.nio.channels`,包含非阻塞I/O操作。 7. **反射和注解处理**:...
java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机...
在Java编程语言中,JDK 1.5引入了一项重要的新特性——注释(Annotations),这是一种元数据,用于提供程序元素(如类、方法、变量等)的附加信息。这些信息可以被编译器、IDE或其他工具用来验证代码、生成代码、...
**注解(Annotation)**是JDK5引入的新特性,如`@Override`表示方法重写,`@Deprecated`标记过时的方法,`@ SuppressWarnings`抑制编译器警告。 总的来说,**JDK中文版API**是学习和掌握Java技术体系的重要资源,它...
Java Annotation,也称为注解,是Java编程语言中的一种元数据机制,自JDK 5.0开始引入。注解提供了在源代码中嵌入元数据的能力,这些元数据可以被编译器、构建工具或者运行时环境用来处理代码。它们在代码中看起来...
5. **注释类型(Annotation Types)**:注释是元数据的一种形式,可以附加到代码的各种元素上,以提供编译器或工具使用的额外信息。例如,`@Override`注释用于表明方法是重写父类方法的。 6. **异常(Exceptions)*...
1. **环境配置**:学习如何安装JDK(Java Development Kit)并设置环境变量,以便于编写和运行Java程序。 2. **Hello, World!**:学习编写第一个Java程序,了解`public class Main { public static void main...
根据给定的文件信息,我们将介绍Java注解...在了解了这些知识点之后,我们可以得出结论,Java注解是JDK5引入的一个重要的语言特性,它为程序提供了丰富的元数据支持,使得代码的编写、阅读和维护变得更加容易。
Javadoc主要用于生成程序的文档,而Annotation则是从JDK5开始引入的元数据特性,它为编译器和运行时环境提供了额外的元信息。 描述中提到,Javadoc在编译时就像普通注释一样被忽略,不会包含在最终的字节码文件中。...
注释(Annotation)是Java提供的一种元数据,用于向编译器或JVM提供关于代码的额外信息。注释可以用于配置、编译时检查、运行时处理等。Java提供了预定义的注释类型,如@Override、@Deprecated,同时也允许用户...
Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。Java标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节...
该插件有助于从Maven使用JDK8提供的集成在Java编译器中的新注释处理 该插件是Maven apt插件的“ alter ego” 文献资料 相关插件 插入 信息 Jboss的eclipse插件 eclipse插件 开发注释处理器 发行版 日期 版本 信息 ...
这个版本引入了许多新特性,提升了性能,增强了安全性和稳定性,同时也增加了对Web服务和动态语言的支持。 1. **新特性**: - **NIO.2**:Java 1.6引入了非阻塞I/O的第二版,提供了更强大的文件系统操作和异步I/O...
java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机...
JDK11注释处理器复制器运行复制器确保JAVA_HOME环境变量指向Java 11安装。 运行应用程序的构建: mvn clean install编译不会通过以下问题: [INFO] --------------------------------------------------------------...