Java 8 角度看注解类型

1、除了在继承关系上的限制(不能添加泛型声明也不能添加extends继承另外的接口),声明时用@interface而不是interface以外,注解类型和普通接口没有区别

2、注解类型中可以包含多个元素,通过方法声明形式来定义,这些方法的声明不能有任何参数或类型参数,也没有方法体;方法返回值类型只能是基本类型、String、Class、Enum、注解类型和数组类型,数组不支持多维数组。注解类型也可以没有任何元素。若注解类型只有一个元素,一般命名为value(作为使用时候的默认传值对象),通过方法后生命default来实现默认值:

public @interface Fuck {
	String me() default "author";
	int you() default 2;
	Class<?> him() default Integer.class;
	String[] all() default {"you", "me"};
}

value的时候:

public @interface ComeOn {
	String value() default "";
}

例子:

@ComeOn("Shit")
@Fuck(me = "Wang8Dan", you = 250, all = {"SB", "XB", "DB"})
public void test() {
	System.out.println("OK");
}

3、注解分为两类:

1)配置注解的元注解

(1)枚举类型ElementType:TYPE(类型声明),ANNOTATION_TYPE(注解类型声明),PACKAGE(包声明),CONSTRUCTOR(构造函数声明),FIELD(域声明),METHOD(方法声明),PARAMETER(方法参数声明),LOCAL_VARIABLE(局部变量声明),其中每种类型代表了这个注解的使用范围

(2)Rentention:SOURCE(注解只会出现在源码,不会出现在字节码),CLASS(注解保留到字节码,但声明在局部变量上的任何情况都只出现在源码),RUNTIME(注解运行时可用,可以通过反射API调用)

(3)Inherited,说明使用此声明的类,它的子类继承上述声明

2)一般注解

(1)Override

(2)Deprecated

(3)SuppressWarning:阻止编译时抛出的某些警告,使用的时候如:@SuppressWarning("UnChecked")

时间: 2024-11-25 15:47:53

Java 8 角度看注解类型的相关文章

从Java的角度看前端JS各种框架

今天看到一篇不错的文章: 从Java的角度理解前端框架,nodejs,reactjs,angularjs,requirejs,seajs http://blog.csdn.net/uikoo9/article/details/45999745 (PS:还有另一篇文章也可以看看:http://uikoo9.com/blog/detail/fe web前端漫谈-uikoo9.com) 文章内容如下: [前端神秘的面纱] 对后端开发来说,前端是神秘的, 眼花缭乱的技术,繁多的框架, 如果你还停留在前端

深入理解Java注解类型(@Annotation)

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 深入理解Java注解类型(@Annotation) - zejian的博客 - 博客频道 - CSDN.NET zejian的博客 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅的Python,终于等到你!    &am

从JVM的角度看JAVA代码--代码优化

从JVM的角度看JAVA代码–代码优化 从JVM的角度看JAVA代码代码优化 片段一反复计算 片段二反复比較 在JVM载入优化为class文件,运行class文件时,会有JIT(Just-In-Time)的介入,它会做进一步优化,这样就须要考虑是否可能被JIT优化. 片段一:反复计算 // 反复计算,这里b()被计算两次 Object a = b() == null ? "" : b(); // 优化代码 Object c = b(); Object a = c == null ? &

内存角度看c#中值类型和引用类型的区别(转)

1.    值类型的数据存储在内存的栈中:引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址. 2.     值类型存取速度快,引用类型存取速度慢. 3.     值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用 4.     值类型继承自System.ValueType,引用类型继承自System.Object 5.     栈的内存分配是自动释放:而堆在.NET中会有GC来释放 6.      值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的

Java编程思想重点笔记(Java开发必看)

Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面 试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理解题(比如is-a关系和has-a关系的区别),也有深入的涉及RTTI和JVM底层 反编译知识. 1. Java中的多态性理解(注意与C++区分) Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意

Java运行时,各种类型存储介绍

Java的内存分配   Java程序运行时的内存结构分成:方法区.栈内存.堆内存.本地方法栈几种.    方法区    存放装载的类数据信息,包括:基本信息:每个类的全限定名.每个类的直接超类的全限定名.该类是类还是接口.该类型的访问修饰符.直接超接口的全限定名的有序列表.每个已装载类的详细信息:运行时常量池.字段信息.方法信息.静态变量.到类classloader的引用.到类class的引用.   栈内存     Java栈内存由局部变量区.操作数栈.帧数据区组成,以帧的形式存放本地方法的调用

转: JaxbContext生成xml文件或java类对象转化注解

JAXB(Java API for XML Binding),提供了一个快速便捷的方式将Java对象与XML进行转换.在JAX-WS(Java的WebService规范之一)中,JDK1.6 自带的版本JAX-WS2.1,其底层支持就是JAXB. JAXB 可以实现Java对象与XML的相互转换,在JAXB中,将一个Java对象转换为XML的过程称之为Marshal,将XML转换为Java对象的过程称之为UnMarshal.我们可以通过在Java 类中标注注解的方式将一个Java对象绑定到一段X

Java 核心技术点之注解

转自:http://www.open-open.com/lib/view/open1473649808122.html 什么是注解 我们都知道在Java代码中使用注释是为了向以后阅读这份代码的人解释说明一些事情,注解是注释的升级版,它可以向编译器.虚拟机等解释说明一 些事情.比如我们非常熟悉的@Override就是一种元注解,它的作用是告诉编译器它所注解的方法是重写父类的方法,这样编译器就会去检查父类是否存在 这个方法,以及这个方法的签名与父类是否相同. 也就是说,注解是用来描述Java代码的,

Java核心技术点之注解

本博文是对Java中注解相关知识点的简单总结,若有叙述不清晰或是不准确的地方,希望大家可以指正,谢谢大家:) 一.什么是注解 我们大家都知道Java代码中使用注释是为了向以后阅读这份代码的人解释说明一些事情,注解是注释的升级版,它可以向编译器.虚拟机等解释说明一些事情.比如我们非常熟悉的@Override就是一种元注解,它的作用是告诉编译器它所注解的方法是重写父类的方法,这样编译器就会去检查父类是否存在这个方法,以及这个方法的签名与父类是否相同. 也就是说,注解是描述Java代码的代码,它能够被