`

java之注解及自定义注解例程

 
阅读更多
package annotation1;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * 注解
 * 
 * 注解的使用构成: 1,注解的申明 2,在类型(代码)上面打上注解 3,第三方的程序在使用打了注解的类型
 * 
 * 作业:自己设计一套文档标签,如果我在一个类上面加了这些标签,我把这个类作为参数传给一个方法,就能为这个类的注释生成一个API文档文件
 * 
 * @author Administrator
 * 
 */
public class AnnotationDemo {

	/**
	 * 使用Annotation(使用反射来得到标签实例) <A extends Annotation> A getAnnotation(Class<A>
	 * annotationClass):得到指定类型的注解实例 Annotation[] getAnnotations():得到该类型上面的所有注释实例
	 * Annotation[] getDeclaredAnnotations() :返回直接存在于此元素上的所有注释。 boolean
	 * isAnnotation() : 该类型是否是一个标签类型(Class) boolean isAnnotationPresent(Class<?
	 * extends Annotation> annotationClass) :判断该类型上面是否有指定的标签类型
	 * 
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		Class<User> c = User.class;
		// 说明:annotation也是一种类型
		// Class a=MyAnn.class;
		if (c.isAnnotationPresent(MyAnn.class)) {
			System.out.println("hello");
			MyAnn ann = c.getAnnotation(MyAnn.class);
			System.out.println(ann.name());
			System.out.println(Arrays.toString(ann.names()));
			System.out.println(ann.resetDay());

			OtherAnn other = ann.other();
			System.out.println("other   " + other.value());
		} else {
			System.out.println("fck");
		}

		Method m = c.getDeclaredMethod("getName");
		if (m.isAnnotationPresent(MyAnn.class)) {
			System.out.println("方法上面有标签");
		}
	}

	/**
	 * @SuppressWanings:去掉警告,(去掉警告的类型写在后面括号里面) 标签有自己定义的能放置的位置
	 */
	@SuppressWarnings(value = "deprecation")
	public void dateTest() {
		Date d = new Date();
		System.out.println(d.toLocaleString());
		AnnotationDemo dd = new AnnotationDemo();
		dd.someThing();
	}

	/**
	 * 标签里面可以有值, 1,一个常量值 2,一个数组
	 * 
	 * @Deprecated:方法过时
	 */
	@SuppressWarnings({ "rawtypes", "unused" })
	@Deprecated
	public void someThing() {
		List a = new ArrayList();
	}

	/**
	 * 注释一个标签。这个标签没有参数值
	 * 
	 * @Override:代表当前方法是覆盖一个父类的方法
	 */
	@Override()
	public String toString() {
		return super.toString();
	}

}

package annotation2;

import java.lang.annotation.ElementType;

/**
 * 自定义一个注释
 * @author Administrator
 * 
 * @Retention:规定定义的这个标签保留到什么时候
 * @Target:规定定义的这个标签能加载哪些位置
 * ANNOTATION_TYPE:标签上面
 * Constructor:构造器上面
 * Field:字段
 * Local variable:局部变量
 * METHOD:方法/方法的返回类型
 * PACKAGE:包
 * Parmater:方法参数
 * TYPE:类/接口/枚举
 */
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnn {
	/**
	 * 在标签里面加参数 类型 属性名称() [default 类型的值]
	 * 注意:如果在标签里面仅有value这个属性要填,在使用的时候就可以忽略不写
	 */
	String name() default "itcast";
	
	String[] names() default {};
	
	String value();
	
	WeekDays resetDay();
	
	OtherAnn other();
	
}


package annotation3;

public @interface OtherAnn {
	String value();
}


分享到:
评论

相关推荐

    java例程100例

    Java是一种广泛使用的面向对象的编程语言,以其跨平台性、安全性及高效性能而闻名。以下是对每个标签及其相关的Java知识点的详细解释: 1. **Java程序**: Java程序由一个或多个类组成,这些类包含了方法和变量。...

    java学习基本例程

    Java学习基本例程是针对初学者设计的一系列源代码示例,旨在帮助新手逐步掌握Java编程语言的基础知识。这些程序通常包含简单的语法结构、数据类型、控制流程、类与对象等核心概念,让学习者通过实践来理解理论。 1....

    简单JAVA例程(绝对新手实例)认识JAVA

    这个“简单JAVA例程(绝对新手实例)”的压缩包文件提供了入门级别的Java代码示例,帮助新手逐步认识和了解Java编程。 首先,让我们来探讨Java的基础知识: 1. **Java语法基础**:Java的语法结构与C++类似,但更加...

    JAVA的基础例程

    JAVA的基础例程,一些关于java的简单程序代码与文档,有助于JAVA基础薄弱的人快速提高,而且也有助于一般的开卷考试课哦,其中一定有你需要的

    明华读卡器Java例程

    本资源是关于明华读卡器的Java例程,真实可用。自己做过测试。

    java串口通信例程

    java串口通信,压缩包包含rxtxcomm以及javacomm20例程,以及一个test例程,已测试。

    简单的Java例程

    一个非常简单的Java程序 计算长方体的表面积和体积

    1602自定义字符例程

    1602自定义字符例程

    java程序设计教程教材例程

    Java程序设计教程教材例程是学习Java编程的重要资源,它由雍俊海教授在第二版的《Java程序设计教程》中提供。这个压缩包包含了教材每一章节中的所有示例代码,旨在帮助读者深入理解Java语言的基本概念、语法结构以及...

    易语言自定义组件边框样式例程

    易语言自定义组件边框样式例程源码,自定义组件边框样式例程,SetWindowLongA,GetWindowLong

    java 4款 游戏例程

    基于Java的扫雷、俄罗斯方块、聊天工具、五子棋,游戏例程。

    Java Nio selector例程

    java侧起server(NioUdpServer1.java),基于Java Nio的selector 阻塞等候,一个android app(NioUdpClient1文件夹)和一个java程序(UI.java)作为两个client分别向该server发数据,server收到后分别打印收到的消息...

    Java 教材中的例程.zip

    Java 教材中的例程.zip

    ROS话题消息自定义例程文件

    ROS话题消息自定义例程文件,供ROS学习使用

    JAVA 网络编程服务器端例程

    JAVA 网络编程服务器端例程,一个测试socket通信的比较好的例程

    java例程之一

    java例程,初学者试用,完整代码,更多资源请联系

    易语言自定义高级表格边框样式例程

    易语言自定义高级表格边框样式例程源码,自定义高级表格边框样式例程,SetWindowLongA,GetWindowLong

    ESP32S2基于VScode环境配置esp-idf插件添加自定义组件例程

    ESP32S2基于VScode环境配置esp-idf插件添加自定义组件例程

    JAVA基础全部例程

    该文件包中含有全部的基础篇代码,简单易懂,内容全面,非常适合Java的初学者

    java小例程

    自己初学的小例程,可能比较简单,但是学习起来还不错

Global site tag (gtag.js) - Google Analytics