java深入

来源:互联网 发布:淘宝联盟怎么看隐藏券 编辑:程序博客网 时间:2024/06/07 09:08
静态导入
overLoad
基本数据类型的自动装箱和拆箱
如果数字在一个字节之内-128--127,这个数会被缓存起来   
享元模式(flyweight):很多小的对象有很多相同的属性,就把他们变成一个对象,不同的属性变成方法的参数,
枚举:每一个枚举元素都是一个对象
所有的方法都要在枚举元素之后,枚举元素后加一对括号,使用构造方法
枚举内部实现抽象方法
反射
Class类
三种得到类的字节码的三种方式
类名.class
对象.getClass
Class.forName():返回类的字节码
字节码在java虚拟机里 直接返回
未存在的  通过类加载器缓存到虚拟机里
相同类的字节码只有一份
九个预定义Class实例对象
参看Class.isPermitive
反射:把java类中的各种成分映射成相应的java类
Constructor类代表某个类中的一个构造方法
得到某个类所有的构造方法
Constructor[] constructors = Class.forName("java.lang.String").getConstructors();
得到某一个构造方法
Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);
constructor.newInstance();
Field类
对象.getclass.getField("变量名"),
只代表成员变量 要用 get()取值
字节码用等号比
Method类
代表某个类的成员方法
对象.getclass.getMethod("方法",具体哪个)
invoke
专家模式:谁有数据,谁就是干这个的专家
数组的反射
hashcode的作用
内省 javaBean-->特殊的java类,方法的名称符合某种规则
注解
@suppressWarnings
@override
@Deprecated
@interfaceA
{
}
@Retention()注解存在的时间
是个枚举类型
source class RunTime
@Target()注解存在的地方
default 缺省默认值
value
泛型
类加载器
加载类的工具
把类的字节码加载到内存中
BootStrap ExtClassLoader AppClassLoader
java类 BootStrap不是java类 可以加载类加载器和其他类
类加载器的委托机制
当前线程的类加载器
如果类A引用了类B,用加载A的加载B
ClassLoader.LoaderClass()
编写自己的类加载器
继承ClassLoader
保留loadClass流程
覆盖findClass
通过defineClass将类转换成字节码
动态代理
利用工厂模式和配置文件的方式进行管理
面向方面的变成
三个步骤
1、获得代理  Class 类  Proxy.
2、获得代理的构造方法
3、加载构造方法

1、
Class clazz = Proxy.getProxyClass(Collection.class.getClassLoader(),Collection.class);
Constructor constructor = clazz.getConstuctor(InvocationHandler.class);
Collection collection = (Collection)constructor.newInstance(new MyInvacationHandler());
2、
Collection collection = (Collection) Proxy.newProxyInstance(Collection.class.getClassLoader,new Class[]{Collection.class},new InvacationHandler()
{
})
原创粉丝点击