Java5新特性(二)

(六) Java注解(Annotation)

一、注解的作用
通知机器,来帮助你更好的使用代码完成程序。
二、使用JDK5内建Annotation
@Override 表示当前方法是覆盖父类的方法。 
@Deprecated  表示当前元素是不赞成使用的。
@SuppressWarnings表示关闭一些不当的编译器警告信息。
三、自定义Annotation类型
1、定义注解
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface AnnotationTest{}
其中@Retention定义作用范围
其中@Target定义其使用的地点
2、使用注解
@AnnotationTest
Class A{}
3、反射调用注解
A.class.isAnnotionPresent(AnnotationTest.class);
AnnotationTest at = A.class.getAnnotion(AnnotationTest.class);
4、注解的属性
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface AnnotationTest{
    String color();
    String value();//只有value属性时
    int[] arrayAttr() default {3,4,4};//数组属性
    EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.RED;//枚举属性
    MetaAnnotation annotationAttr() default @MetaAnnotation("aaa");//注解属性
}
设置@AnnotationTest(color="red",value="abc",arrayAttr={1})
//只有value属性时,@AnnotationTest("abc")

(七) 泛型
一、体验泛型
1
ArrayList<Integer> collection = new ArrayList<Integer>();
collection.add(1);
int i = collection.get(0);
2
泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其他类型的数据。
二、了解泛型
1
ArrayList<E>
ArrayList<Integer>称为参数化类型,叫做ArrayList typeof Integer,
E称为类型变量或者类型参数,Integer称为类型参数的实例或者实际类型参数,ArrayList称为原始类型。
2
参数化类型与原始类型的兼容性
3
参数化类型不考虑类型参数的继承关系
4
在创建数组实例时,数组的元素不能使用参数化的类型
三、泛型中的?通配符
<? extends Number>向上限定,并包括自己
<? super Integer>向下限定,并包括自己
四、创建泛型方法
private static <T> T add(T x,T y){
    return null;
}
private atatic <T> void swap(T[] a,int i,int j){
    T tmp = a[i];
    a[i] = a[j];
    a[j] = tmp;
}
但只有引用类型才可以作为泛型方法的实际参数。
也可以限定类型extends a&b。
多个类型参数<K,V>。
五、创建泛型类,使多个方法使用同一类型
public class GenericDao<T> {
    public void add(T x){}
    public void delect(int id){}
    public void update(T obj){}
    public T findById(int id){ return null; }
    public Set<T> findByConditions(String where){ return null; }
}//dao data access object-->crud

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值