「java注解知识」注解JAVA

博主:adminadmin 2022-12-24 02:21:08 74

今天给各位分享java注解知识的知识,其中也会对注解JAVA进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java 注解可以继承注解吗

这个是没有实现的。

解释:注释本身具有针对性,也就是注释是自定义的,根据实际需要可以修改,此类内容并没有固定的内容规范,所以是没办法进行注释继承的,只能继承方法,不能继承注释的。

整个继承层次结构中的父类和子类的所有属性都映射到同一个表中, 他们的实例通过一个辨别符(discriminator)列来区分.:

//父类

@Entity

//继承映射成一张表的表结构是 父类字段+子类字段+一个鉴别字段(因为可以有多个子类继承父类,这个鉴别字段用于分别一条数据记录是属于那个子类的)

@Inheritance(strategy=InheritanceType.SINGLE_TABLE)

//鉴别字段 name="鉴别字段名称" discriminatorType 鉴别字段数据类型

@DiscriminatorColumn(

name="planetype",

discriminatorType=DiscriminatorType.STRING

扩展资料:

Annotation(注解)是JDK1.5及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,可以将注解分为:标记注解、单值注解、完整注解三类。

都不会直接影响到程序的语义,只是作为注解(标识)存在,可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。另外,可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在class文件、或者运行时中出现(SOURCE/CLASS/RUNTIME)。

参考资料来源:百度百科-Java 注解

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里的注解都有哪些?都有什么用处啊?

注释有 3 中基本类型a. 标记注释 -- 没有变量,只有名称标识。例如 @annotationb. 单一值注释 -- 在标记注释的基础上提供一段数据。如 @annotation(“data”)c. 完整注释 -- 可以包括多个数据成员,每个数据成员由名称和值构成。@annotation(val1="data1",val2="data2")Java 中提供 3 个内置注释类型a. Override ,只能用于方法 ( 不能用于类,包声明或者其他构造 )作用:可以保证编译时候 Override 函数的声明正确性用法: @Overridepublic void fun(){..}b.Deprecated 同样只能作用与方法作用:对不应再使用的方法进行注解用法: @Deprecated public void fun{...} // 它们说这个注释跟函数要同一行c.SupressWarnings 可以注释一段代码作用:关闭特定的警告信息,例如你在使用泛型的时候未指定类型用法: @SupressWarnings(value={"unchecked"}).. 代码Java 中还提供了四种元注释,专门负责注释其他的注释@Target 表示该注释可以用于什么地方。可用的 ElementType 参数包括:CONSTRUCTOR : 构造器的声明FIELD : 域声明 ( 包括 enum 实例 )LOCAL_VARIABLE : 局部变量声明METHOD : 方法声明PACKAGE : 包声明PARAMETER : 参数声明TYPE : 类、接口 ( 包括注解类型 ) 或 enum 声明@Retention 表示需要在什么级别保存该注释信息。可选的 RetentionPoicy 参数包括:SOURCE : 注释将被编译器丢掉CLASS : 注释在 class 文件中可用,但会被 VM 丢弃RUNTIME : VM 将在运行时也保留注释,因此可以通过反射机制读取注释的信息。

Java 的注解是什么原理

Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据的访问。另外,你可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在class文件中出现。

元数据的作用

如果要对于元数据的作用进行分类,大致可分为三类:

编写文档:通过代码里标识的元数据生成文档。

代码分析:通过代码里标识的元数据对代码进行分析。

编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查

java注解有什么用

注解常见的作用有以下几种:

1.生成文档。这是最常见的,也是java 最早提供的注解,常用的有@param @return 等;

2.跟踪代码依赖性,实现替代配置文件功能。比较常见的是spring 2.5 开始的基于注解配置,作用就是减少配置,现在的框架基本都使用了这种配置来减少配置文件的数量;

3.在编译时进行格式检查。如@Override放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出。

java注解知识的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于注解JAVA、java注解知识的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-24,除非注明,否则均为首码项目网原创文章,转载请注明出处。