注解
注解入门
- Annotation不是程序本身,可以对程序作出解释
- 可以被其他程序(比如:编译器等)读取
内置注解
- @Override
- @Deprecated
- @SuppressWarnings
元注解
- 元注解的作用就是负责注解其他注解
- @Target:表示我们的注解可以放在哪些地方
- @Retention:表示我们的注解在什么地方还有效,runtime>class>source
- @Documented:表示是否将我们的注解生成在JAVAdoc中
- @Inherited:子类可以继承父类的注解
自定义注解
- 使用@interface自定义注解格式:public @interface 注解名{定义内容}
反射
静态vs动态语言
- 动态语言是一类在运行时可以改变结构的语言
- 主要动态语言:Object-C、C#、JavaScript、PHP、Python等
- 静态语言与动态语言相对应的,运行时结构不可变的语言就是静态语言。如:Java、C、C++
- Java不是动态语言,但Java可以称之为“准动态语言”。即Java有一定的动态性,我们可以
利用反射机制获得类似动态语言的特性。Java的动态性让编程的时候更加灵活。
- Java不是动态语言,但Java可以称之为“准动态语言”。即Java有一定的动态性,我们可以
Java Reflection
- Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于
Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法 - 加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象,这个对象就包含了完整的类的结构信息
Class对象
- 哪些类型可以有Class对象
- class:外部类,成员内部类,静态内部类,局部内部类,匿名内部类
- interface:接口
- []:数组
- enum:枚举
- annotation:注解@interface
- primitive type:基本数据类型
- void
Java内存分析
- 堆:存放new的对象和数组
可以被所有的线程共享,不会存放别的对象引用 - 栈:存放基本变量类型(会包含这个基本类型的具体数值)
引用对象的变量(会存放这个引用在堆里面的具体地址) - 方法区:可以被所有的线程共享
包含了所有的class和static变量
类加载器
- 类加载的作用:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的与形式数据结构
- 类缓存:标准的JavaSE类加载器可以按照要求查找类,一旦某个类被加载到类加载器中,它将维持加载
一段时间。不过JVM垃圾回收机制可以回收这些Class对象
获取运行时类的完整结构
- 通过反射获取运行时类的完整结构
- Field
- Method
- Constructor
- Superclass
- Interface
- Annotation
- 创建类的对象:调用Class对象的newInstance()方法
- 1.类必须有一个无参构造器
- 2.类的构造器的访问权限需要足够
- invoke:激活的意思
setAccessible
- Method和Field、Constructor对象都有setAccessible()方法
- setAccessible作用是启动和禁用访问安全检查的开关
反射操作泛型
- Java采用泛型擦除的机制来引入泛型,但是一旦编译完成,所有和泛型有关的类型全部擦除
- ParameterizedType:表示一种参数化类型,比如Collection
- GenericArrayType:表示一种元素类型是参数化类型或者类型变量的数组类型
- TypeVariable:是各种类型变量的公共父接口
- WildcardType:代表一种通配符类型表达式
反射操作注解
- getAnnotations
- getAnnotation
练习:ORM
- 了解什么是ORM?
- Object relationship Mapping–>对象关系映射
原文地址:http://www.cnblogs.com/song-hua/p/16817019.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性