[J2SE 5.0专题][2.7]注解

2023-11-11 03:48
文章标签 注解 2.7 专题 5.0 j2se

本文主要是介绍[J2SE 5.0专题][2.7]注解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注解(Annotations)在我看来是J2SE 5.0中比较重大的新特性。将来的EJB 3.0规范将会全面利用该特性来简化Session Bean、 Message-Driven Bean和EntityBean的定义和实现。

Java的注解或多或少也是受了.NET的影响。这不是说Java本来没有注解,以前的诸如JavaDoc的标注,尤其@deprecated,都是注解,只不过这一次的更新将注解推到了Java历史上前所未有的高度。通过注解,我们可以实现原先相对复杂的高级功能。

先看一个实际的例子:

/*
 * Created on 2004-12-28
 *
 */

import java.lang.annotation.*;

/**
 * @author Sean
 *
 */
public class MyAnnotations {

    @MyAnnotationForMethods (
            index = 1,
            info = "This is a method to test MyAnnotation.",
            developer = "Somebody else"
    )
    public void testMethod1() {
        // ...
    }

    @MyEmptyAnnotation
    @MySingleElementAnnotation("For instruction purpose only.")
    @MyAnnotationForMethods (
            index = 2,
            info = "This method is to show multiple annotations."
    )
    public void testMethod2() {
        // ...
    }
   
}

@Target(ElementType.METHOD)
@interface MyAnnotationForMethods {
    int index();
    String info();
    String developer() default "Sean GAO";
}

@interface MyEmptyAnnotation { 
}

@interface MySingleElementAnnotation {
    String value();
}

在这个例子中,我先后定义了三个注解:第一个MyAnnotationForMethods包含三个成员,分别是index、info和developer,其中developer有默认值"Sean GAO",前面的@Target(ElementType.METHOD)是对这个注解的注解,说明该注解只能用于方法;第二个MyEmptyAnnotation是一个空的注解,可以作为标记使用,如早先的Serializable接口;第三个MySingleElementAnnotation包含一个成员,value,这个是硬性规定,当只有一个元素时,必须用value这个名称,它的类型可以是值型、String、Class、enum、或者上述数据类型的一元数组。

注解的定义很像接口,但是他们跟接口在用法上又有相当大的区别。具体的用法参考我上面举的例子。注解是可以叠加的。

在实际应用中,目前比较成熟的是一些测试框架,如我在另一篇文章中翻译的原作者Cedric Beust编写的TestNG。而在本文的开始,我曾经提到在将来的EJB 3.0规范中会有相当多的对注解的应用,让我们预览一下将来的无状态会话bean用注解来定义会是什么样子:

@Stateless public class BookShelfManagerBean {
    public void addBook(Book aBook) {
        // business logic goes here...
    }
    public Collection getAllBooks() {
        // business logic goes here...
    }
    // ...
}

That's it. 我们甚至不用写任何接口和部署描述符,how nice。

有关注解的更详细说明,参考这里。

这篇关于[J2SE 5.0专题][2.7]注解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/387345

相关文章

20.Spring5注解介绍

1.配置组件 Configure Components 注解名称说明@Configuration把一个类作为一个loC容 器 ,它的某个方法头上如果注册7@Bean , 就会作为这个Spring容器中的Bean@ComponentScan在配置类上添加@ComponentScan注解。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 <context:component-scan>@Sc

SpringBoot集成Netty,Handler中@Autowired注解为空

最近建了个技术交流群,然后好多小伙伴都问关于Netty的问题,尤其今天的问题最特殊,功能大概是要在Netty接收消息时把数据写入数据库,那个小伙伴用的是 Spring Boot + MyBatis + Netty,所以就碰到了Handler中@Autowired注解为空的问题 参考了一些大神的博文,Spring Boot非controller使用@Autowired注解注入为null的问题,得到

Java注解详细总结

什么是注解?         Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。         注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。 自定义注解  现在我们自定义一个MyTest注解 public @interface MyTest{String aaa();boolean bbb()

MyBatis-Plus常用注解详解与实战应用

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了大量的常用注解,使得开发者能够更方便地进行数据库操作。 MyBatis-Plus 提供的注解可以帮我们解决一些数据库与实体之间相互映射的问题。 @TableName @TableName 用来指定表名 在使用 MyBatis-Plus 实现基本的 C

Spring MVC的核心类和注解——@RequestMapping注解(二)@RequestMapping注解的属性

一、@RequestMapping注解的属性 属性名 类型 描述 name String 可选属性,用于为映射地址指定别名。 value String[] 可选属性,也是默认属性,用于指定请求的URL。 method RequestMethod[] 可选属性,用于指定该方法可以处理哪种类型的请求方式。 params String[] 可选属性,用于指定客户端请求中参数的值,必须包含

ArkTS开发系列之导航 (2.7动画)

上篇回顾: ArkTS开发系列之导航 (2.6 图形) 本篇内容:动画的学习使用 一、 知识储备 1. 布局更新动画 包含显式动画(animateTo)和属性动画(animation) 动画类型名称特点显式动画闭包内的变化都会触发动画执行, 可以做较复杂的动画属性动画属性变化时触发动画执行, 设置简单 说白了,显示动画就是靠闭包事件触发,属性动画是挂在组件身上的属性变化触发 显式动画

java常用注解

java常用注解 @Component-Spring 框架中的一个Bean组件 import org.springframework.stereotype.Component;@Componentpublic class ExampleComponent {// 这里可以添加你的类实现代码// 例如一个简单的示例方法public String displayMessage() {retur

JVM专题三:Java代码如何运行

通过前面的第一篇文章,对JVM整体脉络有了一个大概了解。第二篇文章我们通过对高级语言低级语言不同特性的探讨引出了Java的编译过程。有了前面的铺垫,咱们今天正式进入Java到底是如何运行起来的探讨。   目前大部分公司都是使用maven作为包管理工具,当我们运行mvn compile命令后,会在我们项目下生成一个target目录,该目录会有一个个classes文件。 接下来点击main

SpringBoot-注解@PropertiySource读取外部属性文件

@ConfigurationProperties和@Value两个注解能从配置文件中获取数据,但是前面讲了他们是从全局配置文件中获取,且只能从全局配置文件中获取,那么如果是一些数值类的数据放在全局配置文件里,是不怎么合适的,我们往往会把他们分离出来,比如前面的课程中Spring的xml配置文件里,与数据库链接的信息,我们是分离出来放在jdbc.properties里,然后在spring.xml里用

注解+反射 参数校验更加简洁

背景 做RPC接口的时候 我们需要对一些字段做非空校验 在字段很多的情况下 如果一个一个的用if判断 代码会很恶心 所以我们需要有一种便捷的方式去实现这个功能 比如使用注解+反射的方式 怎么做? 首先定义注解 非空注解: package com.api.annotation;import java.lang.annotation.*;/*** 非空校验注解*/@Target({Elemen