泛型
相当于C++里的vector vec;就是<>里面的。
泛型可以在类,接口,方法中。
举个例子
定义数据
//创建list
ArrayList<Dog> al=new ArrayList<Dog>();//<Dog>即泛型的指定参数,提高安全性
ArrayList bl=new ArrayList();//不使用泛型
//创建一只狗
Dog dog1=new Dog();
//放入狗
al.add(dog1);
bl.add(dog1);//因为list没指定类型,默认为Object类,因此可以随便存入其子类,各种类型。
//取出
Dog temp=al.get(0);//泛型,因为制定了类型,所以直接取出
Dog temp1=(Dog)b1.get(0);//非泛型,取出的为父类object类,所以要取出子类,则要强制转换。
定义类
Gen<String> gen1=new Gen<String>("aa");//<>因为是泛型可以放任意类型
//定义一个类
class Gen<T>{//T 传入什么类型,Gen 类就是什么什么类型
private T o;
//构造函数
public Gen(T a){
o=a;
}
//得到 T 的类型名称
public void showTypeName(){
System.out.println("类型是:"+o.getClass().getName());
//通过反射机制,我们可以得到 T 这个类型的很多信息
//得到成员函数名
Method [] m=o.getClass().getDeclaredMethods();
//打印
for(int i=0;i<m.length;i++){
System.out.println(m[i].getName());//打印函数名列表
}
}
异常
分为编译时异常(拼写错误)和运行时异常(数组越界)。
1.try…catch
try{
}
catch( ){
}
2.finally异常
try{
}
catch( ){
}
finally{
}//如果没有catch到就进入finally,一般为关闭资源(文件 链接 内存)。
3.异常抛出throws