您的位置:首页 > 编程语言 > Java开发

传智播客java培训2010年4月21java高新技术5(泛型)

2010-04-21 21:37 316 查看

在传智的这段时间每天的情形想都想得到,两点一线,但是每天都感觉到很充实,学习,不停的学习。越是不停的学习,越是感觉自己的力量是那么的微薄,自己的能力是那么的小,JAVA真是博大精深。老师说叫我们不要担心,可是我不担心也不可能哦,毕竟在同类学校毕业的,也许我们可以算得上是很不错的,但是和我们同台竞技的人都是那么的优秀,而在北京这个地方又是人才济济啊,IT行业虽然在北京的需求很大,IT行业也是依靠技术吃饭,但是毕竟我们现在所学的东西很大,也还是值得庆幸,但是,我们只有在不断的学习,不断的充实自己本身的能力,才有可能在日后的竞争中多一份优势。
从明天开始,我们就开始学习hibernate了,昨天晚上看视频看到早点五点,把第一天的内容又预习了一遍。今天将近十二点才起床,吃过饭就去学习上自习,今天我的所学的内容就是,JAVA高新技术,张孝祥老师讲的视频,真的很经典,如果你能看到,一定要看哦!没有看到的,也可经在风外去下载,真的很不错!
1.泛型的使用,如果1.5之前,你可以将任何类型的数据放入集合中,所以,你在使用集合的时候,并没有检查,你放入集合的类型,当你使用泛型之后,可以限定放入集合的类型,这样就可以做到编译器帮你检查,而将错误拦截到运行之前。
2.但是泛型是给编译器看到,而可以通过反射跳过编译器,而在运行时将不同的类型也装入到集合中。如下:
ArraryList<String> coll = new ArrayList<String>();
Coll.add(123);//此时,编译器会帮你检查。而提示你错误。
coll.getClass.getMethod("add",Object.class).invoke(coll,1233);//这样却是行得通的。
采用上面的方法,就可以跳过编译呖呖的检查。

List li = new ArrayList<String>();//可以
List<String> list = new ArrayList();//可以
List<Object> list1 = new ArrayList<String>();//错误
List<String> list1 = new ArrayList<Object>();//错误

3.自定义
i. 泛型的T不能为基本类型

根据要返回的类型来实现
public static <T> T autoConvert(Object obj){
return (T)obj;
}

4.定义泛型类型
1.定义通用DAO类
package e.test;
import java.util.List;
//dao data access object--->
public class GenericDao<T> {
public void add(T t){
//保存
System.out.println(t.getClass().getName());
}
public void dele(T t){}
public void update(T t){ }
public List<T> findAll(){
List<T> list = null;
return list;
}
}

2.定义PersonDao
package e.test;

public class PersonDao extends GenericDao<Person> {
public static void main(String[] args) {
PersonDao pdao = new PersonDao();
pdao.add(new Person());//执行结果 e.test.Person
}
}
达到了通用的效果,个人第一次接触的时候,感觉这个非常牛X。静态方法不能使用泛型的类型
5.怎么得到GenericDao中
public List<T> findAll(){
List<T> list = null;
return list;
}
该方法中的T的际类型。

类加载器:

BootStrap  系统
ExtClassLoader
AppClassLoader classpath
不同的类加载器,有各自的管辖范围。
我们可以自定义自已的类加载器,但是要使用自己定义的,必须挂到加载器树上。
Java是如何分派类加载器的,首先派当前线程的类加载器,每个线程都有自己的类加载器,
模板方法设计模式:
//需要继续学习,似懂非懂

代理的概念与作用 AOP

安全,事务,日志等功能要贯穿到很多的模块中,它们就是交叉业务
动态代理技术
分析JVM动态生成的类
Proxy getProxyClass()
Struingbuilder  的StringBuffer 他们在使用的方式上都一样,但是单线程用Builder, 多线程用Buffer。
AOP是面向切面编程,也是后面学习spring AOP的基础,所以现在就学习,对两个星期之后的SPRING是非常有帮助的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息