---------------------------------------------------------------- android培训、java培训、期待与您交流! ----------------------------------------------------------------------------------------
一:注解
即程序的一种标记,java编译器可以通过反射来了解你的类及各种元素有无标记,看你有什么标记就去做相应的事。
//压缩警告,允许调用过时方法
@SuppressWarnings("deprecation")
@Deprecated 表明方法已过时
@override 表明是一个重写方法
元注解
@Retention() 声明定义注解的生命周期
RetentionPolicy.SOURCE 注解在源文件中
RetentionPolicy.CLASS 在class文件中
RetentionPolicy.RUNTIME 在运行时,即能被加载到内存
@target(ElementType.METHOD) 用于说明注解加在方法上,还能加在类上等。
注解属性
public @interface ItcastAnnotation {
//注解有一个color方法
String color() default("blue");
String value();
int [] arrayAttr() default{4,5,6};
EnumTest.TrafficLamp lamp() default EnumTest.TrafficLamp.Red;
MetaAnnotation annotationAttr() default @MetaAnnotation("zcb");
Class classAttr() default String.class;
}
二,泛型
泛型是给编译器看的,程序运行的时候已经去掉了类型
1,定义泛型
//泛型举例,交换任意数组的两个元素,T不能是基本数据类型
public static <T> void swap(T[] a, int i, int j)
{
T temp=a[i];
a[i]=a[j];
a[j]=temp;
}
注意:泛型定义返回值类型前。
2,当一个变量被声明为泛型时,只能被实例变量和方法调用,而不能被静态变量和静态方法调用。因为静态成员是所有参数化的类所共享的,所以静态成员不该有类级别的类型参数
三,类加载器
虚拟机一初始化就有的类加载器BootStrap-->JRE/lib/rt.jar
儿子加载器:ExtClassLoader-->JAE/lib/ext/*.jar
孙子加载器:AppClassLoader-->classpath指定的所有jar或目录
类加载器采用委托机制,即App先接到类,并不直接加载,而是交给Ext加载,而Ext再交给BootStrap,如果Boot能找到,就直接加载,否则再传回让儿子加载