「java注解概念」java基本注解
本篇文章给大家谈谈java注解概念,以及java基本注解对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java注解的实质,何为注解
- 2、在JAVA中,定义方法的时候,带参数的方法这个概念怎么说?
- 3、java注解是怎么实现的
- 4、Java注解的出现 Java的注解是从何开始的
- 5、java注解技术是什么技术
- 6、java 注解都有哪些东西?
java注解的实质,何为注解
注解实质是预先告之“解释器”下面的“方法(函数)与某个注册事件相绑定”。
比如当某个地址被Post 访问时,你希望你的程序作出响应,以往传统方法可能需要在web.xml 配置文件中写上一堆配置映射关系,设定事件的响应。
通“注解”就不用这样复杂了。省去了在配置中文件中注册、配置映射等工作。
简单点说:注解就是告之 当某个事件发生时,该交给谁来处理,该如何处理。
在JAVA中,定义方法的时候,带参数的方法这个概念怎么说?
Java中注解(Annotation)的根本概念啥是注解(Annotation):
Annotation(注解)即是Java供给了一种元程序中的元素相关 任何信息和着任何元数据(metadata)的途径和办法。Annotion(注解)是一个接口,程序能够通过反射 来获取指定程序元素的Annotion目标,然后通过Annotion目标来获取注解里边的元数据。
Annotation(注解)是JDK5.0及今后版别引进的。它能够用于创立文档,盯梢代码中的依赖性, 乃至履行根本编译时查看。
从某些方面看,annotation就像润饰符相同被运用,并应用于包、类 型、 布局办法、办法、成员变量、参数、本地变量的声明中。这些信息被存储在Annotation的“name=value ”布局对中。
Annotation的成员在Annotation类型中以无参数的办法的办法被声明。其办法名 和返回值界说了该成员的姓名和类型。
在此有一个特定的默许语法:答应声明任何Annotation成员的默 认值:一个Annotation能够将name=value对作为没有界说默许值的Annotation成员的值,当然也能够使 用name=value对来掩盖其它成员默许值。
这一点有些近似类的承继特性,父类的布局函数能够作为子类 的默许布局函数,可是也能够被子类掩盖。
Annotation能被用来为某个程序元素(类、办法、 成员变量等)相关任何的信息。需求注意的是,这里存在着一个根本的规矩:Annotation不能影响程序 代码的履行,无论添加、删去。
Annotation,代码都始终如一的履行。
另外,尽管一些annotation通过 java的反射api办法在运转时被拜访,而java言语解说器在作业时疏忽了这些annotation。
正是因为 java虚拟机疏忽了Annotation,致使了annotation类型在代码中是“不起效果”的;
需通过某种配套的东西才会对annotation类型中的信息进行拜访和处置。
这篇文章中将包括规范的Annotation和meta- annotation类型,陪同这些annotation类型的东西是java编译器(当然要以某种特另外办法处置它们) 。
java注解是怎么实现的
注解就是元数据,即一种描述数据的数据。所以,可以说注解就是源代码的元数据。
@Override
public String toString() {
return "This is String Representation of current object.";
}
上面的代码中,我重写了toString()方法并使用了@Override注解。
但是,即使我不使用@Override注解标记代码,程序也能够正常执行。
那么,该注解表示什么?这么写有什么好处吗?
事实上,@Override告诉编译器这个方法是一个重写方法(描述方法的元数据),如果父类中不存在该方法,编译器便会报错,提示该方法没有重写父类中的方法。如果我不小心拼写错误,例如将toString()写成了toStrring(){},而且我也没有使用@Override注解,那程序依然能编译运行。但运行结果会和我期望的大不相同。
还有就是灵活运用注解,对在开发框时使用反射很有帮助
如何开发:
Annotation定义了一种标准的描述元数据的方式。它提供了四种元注解:
@Documented //注解是否将包含在JavaDoc中
@Retention //什么时候使用该注解
@Target? //注解用于什么地方
@Inherited //是否允许子类继承该注解
具体用法,你可以看看jdk源码
Java注解的出现 Java的注解是从何开始的
我不知道知道谁发明了注解,但是可以告诉你,java不同版本间的功能定义是不同的。这个功能的定义不是个人决定的,而是一个叫做JCP的组织, 这个组织云集了众多的资深专家,包括顶级开发团队中的精英。从java5开始出现了注解这个概念。定义注解的标准是JSR-250。注解从一定程度上分担了xml配置的一些任务(配套的标准如:JPA)。甚至可以在项目中用纯注解来配置。几乎所有的主流框架(除了struts1)都有自己的一套注解。追溯注解的源头,我个人认为,注解的前身就是我们看到的注释文档。标准的注释文档中有包括@author等的标注。在注解之前我们可以用Xdoclet来进行项目的配置。可惜这一方法几乎没有得到应用。但是注解的出现改变了这一现状。注解易于定义,包括本身就是java,提供了很好的编译器支持。我们可以用注解配置对象。这个是xml文件无法做到的。因为注解的易配置性和强灵活性,还有对代码的执行并不产生影响。注解得到了广泛的应用。现在,新的项目开发都开始倾向于注解这种新的开发方式,在开发的效率和纠错性上面。他已经远远优于xml配置。加上主流框架的支持及其它的易于实现性。相信他会走的更好。
java注解技术是什么技术
Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据的访问。另外,你可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在class文件中出现。
元数据的作用
如果要对于元数据的作用进行分类,大致可分为三类:
编写文档:通过代码里标识的元数据生成文档。
代码分析:通过代码里标识的元数据对代码进行分析。
编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查
java 注解都有哪些东西?
Java注解相当于对类或者方法或者变量额外的注释(标识)。以下是转载
-------------------------------------------------------
Annotation是Java5、6只后的新特征(中文称之为注解),并且越来越多的得到了应用,比如Spring、Hibernate3、Struts2、iBatis3、JPA、JUnit等等都得到了广泛应用,通过使用注解,代码的灵活性大大提高。
这些都是使用别人定义的注解,一般注解的使用都是在一些基础框架或者类库中来定义的,因此很少见过有人自己去写一个注解出来并使用在程序中,因此注解的使用常常给人感觉很神秘,这就为你揭开注解的面纱。
注解的神秘之处在于:通过类似注释的方式,可以控制程序的一些行为,运行时的状态,可以为成员赋值,做配置信息等等,与常规编码思维大相径庭。
只用别人定义好的注解是搞不懂这些问题的,要想真正知道注解内部的秘密,要自己定义注解,然后在程序中获取注解信息,拿到注解信息后,就可以为我所用了。
下面我简单演示下三类注解的用法:类注解、方法注解、字段(也称之域)注解的定义与适用,并看看如何获取注解的信息。
一、定义注解
package lavasoft.anntest;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 类注解
*
* @author leizhimin 2009-12-18 14:15:46
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation4Class {
public String msg();
}
package lavasoft.anntest;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 方法注解
*
* @author leizhimin 2009-12-18 14:16:05
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation4Method {
public String msg1();
public String msg2();
}
package lavasoft.anntest;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 字段注解
*
* @author leizhimin 2009-12-18 15:23:12
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface MyAnnotation4Field {
public String commont();
public boolean request();
}
二、写一个类,用上这些注解
package lavasoft.anntest;
/**
* 一个普通的Java类
*/
@MyAnnotation4Class(msg = "测试类注解信息")
class TestClass {
@MyAnnotation4Field(commont = "成员变量的注解信息", request = true)
private String testfield;
@MyAnnotation4Method(msg1 = "测试方法注解信息1", msg2 = "测试方法注解信息2")
public void testMethod() {
System.out.println("Hello World!");
}
}
三、测试注解
为了使用注解,需要通过反射获取注解的对象。通过注解对象来操作注解信息。
package lavasoft.anntest;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* 测试类
*
* @author leizhimin 2009-12-18 14:13:02
*/
public class TestOptAnnotation {
public static void main(String[] args) throws NoSuchMethodException, NoSuchFieldException {
TestClass t = new TestClass();
System.out.println("-----------MyAnnotation4Class注解信息---------");
MyAnnotation4Class an4clazz = t.getClass().getAnnotation(MyAnnotation4Class.class);
System.out.println(an4clazz.msg());
System.out.println("-----------MyAnnotation4Method注解信息---------");
Method method = t.getClass().getMethod("testMethod", new Class[0]);
MyAnnotation4Method an4method = method.getAnnotation(MyAnnotation4Method.class);
System.out.println(an4method.msg1());
System.out.println(an4method.msg2());
System.out.println("-----------MyAnnotation4Field注解信息---------");
Field field = t.getClass().getDeclaredField("testfield");
MyAnnotation4Field an4field = field.getAnnotation(MyAnnotation4Field.class);
System.out.println(an4field.commont());
System.out.println(an4field.request());
}
}
运行结果:
-----------MyAnnotation4Class注解信息---------
测试类注解信息
-----------MyAnnotation4Method注解信息---------
测试方法注解信息1
测试方法注解信息2
-----------MyAnnotation4Field注解信息---------
成员变量的注解信息
true
Process finished with exit code 0
四、总结
看完上面的测试过程,Annotation已经不再神秘了,这里总结下自定义注解的使用方法:
1、自定义注解,注意注解的时空范围,简单说就是注解针对的目标(类、方法、字段),以及注解的时效(运行时、或者源码中有效)。
2、要获取注解的信息,必须通过Java的反射技术来获取Annotation对象,因为你除此之外没有别的获取注解对象的方法。
3、获取了注解对象,就可以调用注解的方法来获取相对应的值了。为基础框架所用。
4、当然,注解也可以没有定义成员,这样注解就成了一个标记符号了。
关于java注解概念和java基本注解的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。