JavaWeb——Day20_1
来源:互联网 发布:Fetish 知乎 编辑:程序博客网 时间:2024/04/26 00:25
*1.泛型
[Java基础加强]
方法泛型:定义在方法上的泛型就叫做方法泛型,作用的范围的当前方法内部
泛型在使用之前必须先定义<T>,其中的字母可以是任意字母,但是通常使用大写字母
可以认为,当方法在被调用到时,虚拟机自动判断出泛型的具体类型.
public static <T> void doxx(T t);
类上的泛型:定义在类上的放行叫做类泛型,作用范围是整个类中都可以使用
类上的泛型:定义在类上的放行叫做类泛型,作用范围是整个类中都可以使用
public class GenericDao<T> {}
可以认为,在使用这个类时,就需要指定出泛型的具体类型.如果不明确指定,则泛型是它的上边界类型的.
静态方法不能使用类上定义的泛型,如果想使用泛型静态方法必须自己定义泛型
*泛型通配符:
因为泛型没有继承关系,所有当需要用一个泛型引用引用不同的泛型实现时,泛型中写他们共同的父类是不行的,这时该怎么做呢?引入一个新的概念,叫做泛型通配符?,注意泛型通配符只能用在泛型引用中,用来引用不同的泛型实现,不能出现在实现中.
List<?>list = null;
list = new ArrayList<String>();
list = new ArrayList<Integer>();
*泛型的边界:
如果没有指定泛型默认可以接受任意的类型,有时希望进一步限制,此时可以使用泛型的边界:
extends - 用来指定泛型的上边界,使用在泛型的通配符中和泛型定义中,指定具体的泛型实现必须是指定的类或其子类.
坏处是,在传入对象时,只能传入null
好处是,获取到泛型的对象时,可以调用上边界的方法.
super - 用来指定泛型的下边界,使用在泛型的通配符中,指定具体的泛型实现必须是指定类或其超类.
好处是,可以传入对象时,可以传入下边界的子孙类对象
坏处是,获取到泛型对象时,只能调用Object身上的方法
定义了上边界之后,只能存null;
*2.注解_动态代理
注解:可以作为配置信息控制程序的运行,注解可以在一些场合用来替代配置文件
Annotation 注解:程序中给人看到提示信息叫注释,给程序看的提示信息叫做注解
@xxxx(....)
jdk1.5内置的注解:
@Override: 限定重写父类方法, 该注解只能用于方法
@Deprecated: 用于表示某个程序元素(类, 方法等)已过时
@SuppressWarnings: 抑制编译器警告.
自定义注解:
1.声明注解
(1)使用 @interface关键字来定义注解,在这个类中可以声明注解的属性
注解属性的声明类似于在为接口声明一个方法,同时可以为属性设定默认值
注解属性支持如下类型:String、基本数据类型、枚举、Class 、其它注解类型、以上数据类型相应一维数组
如果注解中只包含一个名为value的属性,则这个属性在使用时可以省略注解的名字直接写值
public @interface tran{
//String name();
//String name2() default "xxx";
String value();
}
(2)使用元注解对注解进行描述
@Retention:用来指定注解的保留范围
RetentionPolicy.SOURCE: 编译器直接丢弃这种策略的注释
RetentionPolicy.CLASS: 编译器将把注解记录在 class 文件中. 当运行 Java 程序时, JVM 不会保留注解. 这是默认值
!!RetentionPolicy.RUNTIME:编译器将把注释记录在 class 文件中. 当运行 Java 程序时, JVM 会保留注解. 程序可以通过反射获取该注释
@Target:指定被修饰的注解可以使用在什么位置
ElementType的成员变量。可以是类/方法/字段/构造方法/包声明.....
@Documented: 用于指定被该元 Annotation 修饰的 Annotation 类将被 javadoc 工具提取成文档.
@Inherited: 被它修饰的 Annotation 将具有继承性.如果某个类使用了被 @Inherited 修饰的 Annotation, 则其子类将自动具有该注解
动态代理:用来修改已经具有的对象的方法,控制方法是否执行,或在方法执行之前和执行之后做一些额外的操作
Proxy.newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h);
loader -- 类加载器
interfaces -- 指定代理对象实现哪些接口,通常代理对象要和被代理对象实现相同的接口,从而保证和被代理者具有相同的方法
InvocationHandler
-- 处理器对象,当调用代理对象的任何方法时,都会导致此对象中的invoke方法执行,在这个方法中可以编写是否允许方法执行,以及在方法执行之前和之后做那些额外的操作
{
Object invoke(Object proxy, Method method, Object[] args)
proxy -- 代理者对象
method -- 当前调用到的方法
args -- 方法的参数
返回值 -- 就是这个方法要返回什么
}
- JavaWeb——Day20_1
- JavaWeb——Day01_1
- JavaWeb——Day01_2
- JavaWeb——Day02_1
- JavaWeb——Day02_2
- JavaWeb——Day03_1
- JavaWeb——Day03_2
- JavaWeb——Day04_1
- JavaWeb——Day04_2
- JavaWeb——Day05_1
- JavaWeb——Day05_2
- JavaWeb——Day06_1
- JavaWeb——Day06_2
- JavaWeb——Day07_1
- JavaWeb——Day07_2
- JavaWeb——Day08
- JavaWeb——Day09_1
- JavaWeb——Day09_2
- iOS提交发布应用(Xcode5)到App Store 详细解析
- 一维DFT
- 网络基础
- 第十二周 求数的阶乘(递归算法)
- MongoDB 开篇
- JavaWeb——Day20_1
- HDU 4734F(x) 题解 (记忆化DP)
- ubuntu12.04 the system is running in low-graphics mode的解决方案
- [PAT]1004. Counting Leaves (30)
- IOS 7 下面 状态栏的字体改成白色
- Scala——基础篇
- 哈希表心得
- 银行家算法(2):用JAVA实现算法过程
- Cocos2d-x v3.X的颜色混合BlendFunc使用详解