学习总结(annotation)

自定义MyAnnotationTest

package com.zhanghaobo.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author
 *自定义注解(只能用于方法上)
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotationTest {

    MyName name();
}
enum MyName{
    HELLO,WORLD,WELCOM,HELLOWORLD
}

测试类 Test
 1 package com.zhanghaobo.annotation;
 2
 3 public class Test {
 4     @MyAnnotationTest(name=MyName.HELLOWORLD)
 5     public void doSomething(){
 6         System.out.println("注解修饰调用");
 7     }
 8     public void doOtherthing(){
 9         System.out.println("没有被修饰的方法");
10     }
11     @MyAnnotationTest(name=MyName.WELCOM)
12     public void doSome(String... name){
13         System.out.println("带参数的修饰调用"+name);
14     }
15 }
调用类
 1 package com.zhanghaobo.annotation;
 2
 3 import java.lang.reflect.Method;
 4
 5 /**
 6  * @author Administrator
 7  *通过反射调用Test中的方法,并获取注解方法的类型
 8  */
 9 public class MyRefelctionTest {
10     public static void main(String[] args) throws Exception {
11         Class<?> clazz=null;
12         try{
13         clazz=Class.forName("com.zhanghaobo.annotation.Test");
14         }catch(Exception e){
15             e.printStackTrace();
16         }
17         Method[] method=clazz.getMethods();
18         for(Method me:method){
19             //如果是带自定义注解的执行
20             if(me.isAnnotationPresent(MyAnnotationTest.class)){
21                 System.out.println(me.getAnnotation(MyAnnotationTest.class));
22                 //如果是无返回的,并且不带可变参数的执行
23                 if(me.getReturnType()==Void.TYPE&&!me.isVarArgs()){
24                     me.invoke(new Test());
25                 }
26             }
27         }
28     }
29
30 }

执行结果:

@com.zhanghaobo.annotation.MyAnnotationTest(name=HELLOWORLD)
注解修饰调用
@com.zhanghaobo.annotation.MyAnnotationTest(name=WELCOM)

 
时间: 2024-10-23 01:54:16

学习总结(annotation)的相关文章

学习java annotation

Annotation介绍 内置注解 自定义注解 元注解 /** * 测试自定义注解的使用 * */ @SxtAnnotation01 public class Demo02 { @Annotation01(age=19,studentName="老高",id=1001, schools={"北京大学","北京航空航天大学"}) public void test(){ } @Annotation02("aaaa") public

Mac下多个jdk自由切换

1.缘由,某些场合下需特别配置jdk,如最近学习遇到 annotation注解支持jdk1.5以上版本,而我用的jdk1.8,导致tomcat启动失败,提示降低jdk版本到1.7,1.6 2.搜索mac下可否多个jdk共存,得到如下方法 3. 3.1 打开terminal,输入命令:open .bash_profile,打开下图编辑器 3.2配置jdk环境 export PATH=$PATH:/usr/local/apache-tomcat-7.0.79/binexport JAVA_6_HOM

Annotation研究的一些学习资料

转自chanyinhelv原文Annotation研究的一些学习资料 下面是我最近对Annotation研究的一些学习资料,收集于此,供大家学习之用. 一.Annotation要素类介绍 在GeoDatabase中有五种类型的要素类,即点.线.面.标注要素类和注记要素类.注记要素类涉及的较少,这里不谈.本文主要讨论标注要素类的特征,即Annotation FeatureClass的特性. 标注要素类是一种专门用于存储和显示文本或图形元素的数据结构,在这之前,我们只谈过文本或图像只能通过MXD的方

学习笔记之Java Annotation学习总结 [ 光影人像 东海陈光剑 的博客 ]

?? 按照自己定的学习计划,今天是该写点什么了. ? 在上篇文章里提到的是JUnit的学习,其中就涉及到了一些内置的annotation,如@Test.@Ignore等.现在我就结合个人的理解谈下如何自定义自己的annotation. ? annotation能被用来为某个程序元素(类.方法.成员变量等)关联任何的信息,但annotaion不能影响程序代码的执行,无论增加.删除annotation,代码都始终如一的执行.另外,尽管一些annotation通过java的反射api方法在运行时被访问

Android开发学习之路--Annotation注解简化view控件之初体验

一般我们在写android Activity的时候总是会在onCreate方法中加上setContentView方法来加载layout,通过findViewById来实现控件的绑定,每次写这么多代码总觉得很烦躁.近来看了下android中有Annotation来实现这方面的简化,对于java不是很了解,就简单的看了下.上次玩web的时候,springmvc也有很多的注解,不知道怎么实现的,这里其实基本上类似. Annotation注解这里主要还是讲讲怎么使用吧,单纯的原理会把人绕进去的,没办法,

Rhythmk 学习 Hibernate 08 - Hibernate annotation 关联关系注解

1.一对一 (One to One)    共三种情况:     1.1 主键共享    1.2 外键共享 1.3 中间表关联 1.1  code: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @Entity public class article {     @Id     @GeneratedValue    public Integer getArticleId() {         return articleId;     }     .....  

Rhythmk 学习 Hibernate 07 - Hibernate annotation 实体注解

参考: http://docs.jboss.org/hibernate/annotations/3.4/reference/zh_cn/html_single/ 1.系统配置: 可以通过使用  mapping的 resource,于class 属性混合配置 <mapping resource="com/rhythmk/model/product.hbm.xml" /> <mapping class="com.rhythmk.model.User"&

疯狂Java学习笔记(52)-----------Annotation(注释)第一篇

从JDK1.5开始,Java中增加了对元数据(MetaData)的支持,也就是Annotation(注释),这种Annotation与Java程序中的单行注释和文本注释是有一定区别,也有一定联系的.其实,我们现在说的Annotation是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理.通过Annotation,程序开发人员可以在不改变原来逻辑的情况下,在源文件嵌入一些补充的信息.代码分析工具,开发工具和部署工具可通过这些补充信息进行验正或者部署. Annotatio

【学习】Spring 的 AOP :基于Annotation 的“零配置”方式

转自:http://www.cnblogs.com/jbelial/archive/2012/07/20/2539123.html AOP(Aspect Orient Programming ) , 面向切面编程 . 1.AOP的基本概念: AOP框架并不与特定的代码耦合,AOP框架能处理程序执行中特定的切入点(Pointcut),而不与具体某个类耦合.AOP框架具有如下特征: 1.各步骤之间的良好隔离性. 2.源代码无关性. AOP的专业术语: 1.Aspect(切面) : 应用运行过程中的关

JAVA学习-Java新特性(泛型、枚举、Annotation)

所谓的Java新特性现在都是指从JDK 1.5之后开始的,例如,在前面已经学习过两个新特性:switch支持String判断(JDK 1.7提供的).自动装箱和拆箱.可变参数.foreach.静态导入.泛型.枚举.Annotation. 对于所有的新特性,我的个人建议:有些新特性你今天一定是不知道怎么用的,我们今天只是来看一下这些语法,至于使用方面,慢慢来观察. 1.可变参数(理解) 如果说现在有这样一个要求,要求实现整数的加法操作,并且方法可以接收任意多个整型数据一起实现加法操作. 如果按照传