biezhihua的专栏

基础加强一、回顾泛型泛型的基本概念:以ArrayList<E>为例:① ArrayList<E>中的E称为类型参数变量ArrayList<Integer>中的Integer称为实际类型参数②整个ArrayList<E>称为泛型类型整个ArrayList<Integer>称为参数化的类型(ParameterizedType)定义一个泛型方法::// <T>:泛型定义的声明,在返回值前面。public <T> T findOne(Class<T> clazz) {} <T> void findTwo(){}<K,V> V find(K k);定义一个带泛型的类:<T> {} 二、泛型的反射// 获取带有泛型信息的父类,例如:BaseDao<User>,这个整体称为:ParameterizedType,Type是Class类的接口Type type = XXX.class.getGenericsSuperclass(); ParameterizedType ptype = type;Clazz clazz = ptype.getActualTypeArguments()[0];三、注解介绍①从JDK5.0开始,Java增加对元数据(MetaData)的支持,也就是注解(Annotation)。②Annotation其实就是代码里的特殊标记,它用于代替配置文件。传统的方式中,使用配置告诉类如何运行,有了注解以后,开发人员可以通过注解告诉类如何运行。③在Java技术里注解的典型应用是:可以通过反射技术得到类里面的注解,以决定怎么样运行类。基本的注解① SupperssWarnings:抑止警告自定义注解

① 注解的定义

public @interface MyAnnotation {}

② 注解的属性:既不像方法,也不像字段。 注解属性能够使用的类型:primitive(基本类型),String,Class,Annotation,enum或者是以上类型的一维数组。 如果给注解中的属性赋值,,可以只指定一个值,也可以指定多个值。

String name();; }

③ 使用注解及属性:

{@MyAnnotation_1(name = “ABC”, age = 18)(){}}注解的反射涉及到的API:java.lang.reflect.AnnotatedElement

Class,Constructor,Field,Method,Packages都实现了该接口。

// 获取自己所拥有的指定的注解类型,aType是一个注解类型的字节码对象。Annotation getAnnotataion(Class<T> aType); // 返回所有的注解Annotation[] getAnnotations(); // 判断自己有没有指定的注解类型boolean isAnnotationPresent(Class<? extends Annotation> aType);类的三种状态

① SOURCE: .java文件 ② CLASS: .class文件 ③ RUNTIME:内存中的class,由类加载器把.class文件加载入内存。

注解使用的生命周期① 注解的默认存放的范围是:字节码状态。运行时(RUNTIME)是没有的。使用元注解改变注解的存活范围

① 只能用于注解的注解,就是元注解。

@Retention(RetentionPolicy.RUNTIME)public @interface MyAnnotation_1 {}使用元注解改变注解的放置位置① 放在类上:@Target(ElementType.TYPE)

② 放在方法上:@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)public @interface MyAnnotation_1 {}

世界上那些最容易的事情中,拖延时间最不费力。

biezhihua的专栏

相关文章:

你感兴趣的文章:

标签云: