
1.异常
异常Throwable分为Exception和Error。
Exception可以捕获,包括CheckException和UncheckedException,checkExcption不处理(try catch)无法编译,UncheckException可以throw如越界,空指针等
Error,程序无法处理的错误,一般会导致线程终止。
Throwable常用的方法包括:getMessage(简单描述),toString(详细),printStackTrace(完整异常信息)
例如空指针:
2.try-catch-finally
finally不执行的情况:1.System.exit先执行 2.程序所在线程死亡 3.关闭cpu
资源类(需要close)可以使用try-with-resources替代,在执行完后会自动关闭资源。
3.泛型
泛型类,泛型接口,泛型方法。泛型只在编译阶段有效
泛型类实例化的时候必须指定类型。
泛型接口实现可以不指定具体类型。
泛型方法 静态泛型方法只能使用泛型类型,不能指定具体类型,只有声明了
自定义接口通用方法可以用泛型类。
public class GenericDemo {
/**
* 泛型类
* @param
*/
public class Generic {
private T key;
public Generic(T key) {
this.key = key;
}
/**
* 不是泛型方法,只是用了已经声明过得泛型T
* @return
*/
public T getKey(){
return key;
}
/**
* 这是泛型方法,public 和返回值之间存在
* @param generic
* @param
* @return
*/
public T getKey(Generic generic){
System.out.println("key is :" + generic.getKey());
return generic.getKey();
}
/**
* 这也是泛型方法
* @param t
* @param
*/
public void show(T t){
System.out.println(t);
}
}
4.反射
灵活,但是性能稍差,有安全问题,反射可以随意访问和修改类的所有状态和行为,破坏了类的封装性,如果不熟悉被反射类的实现原理,随意修改可能导致潜在的逻辑问题。可以通过反射访问类的私有属性,相当于关闭了安全检查。
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
ReflectModel demo = new ReflectModel();
Class clazz = demo.getClass();
Method method = clazz.getDeclaredMethod("test",null);
//通过setAccessible 访问私有方法
method.setAccessible(true);
method.invoke(demo);
}
注解,框架,代理都会用到反射
5.注解
注解本质是一个继承了Annotation 的特殊接口
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)