一、注解与注释
注解与注释是不同的,主要体现在下面四个方面:
1、定义不同:注解:英名为Annotation,它是JDK5.0及以后版本引入的一个特性。 与类、接口、枚举是在同一个层次,可以成为java 的一个类型。用一个词描述注解------元数据,它是一种描述数据的数据。所以,可以说注解就是源代码的元数据。注释:是对源代码作介绍、评议或说明的文字。
2、 作用不同:注解是Java 编译器可以理解的部分,是给编译器看的。通过标记包、类、字段、方法、局部变量、方法参数等元素据,告诉jvm这些元素据的信息。注释是程序员对源代码做一些记忆或提示性描述,是给人来看的。它能告诉开发者这段代码的逻辑、说明、特点等内容,对代码起到解释、说明的作用。
3、使用范围不同:注解 ,参与代码编译,以@开头的,与工具一起使用。对于位置、语法、内容有一定的限制。注释 ,可以随意在任意位置填写内容,对代码任何没有影响。
4、运行过程不同:
注解,在运行中JVM会去读取它,并对相应数据进行的操作,会向程序员反遣被标元素的注解。
注释,会被编译器忽略。
二、注解的分类
注解包括内置注解、元注解和自定义注解。
内置注解:Java自带的,比如说@Override、@Deprecated、@SuppressWarnings。
元注解:负责注解其他注解。
@Target:用于描述注解的使用范围,即被描述的注解可以用在什么地方。
@Retention:: 表示需要在什么级别保存该注释信息 , 用于描述注解的生命周期
自定义注解:通过@interface自定义注解。
@SuppressWarnings("all")
public class MyTest{
@MyAnnotation();
public void MyTest(){}
}
@Target(value={ElementType.METHOD,ElementType.TYPE,ElementType.FIELD})//作用域
@Retention(RetentionPolicy.RUNTIME)//运行时级别
@interface MyAnnotation{
String name () default "";
int age () default 0;
int id () default -1;
String schools () default{"西部开源"}
}
三、反射
能够分析类能力的程序称为反射。反射机制可以用来:
(1)在运行时分析类的能力;
(2)在运行时查看对象;
(3)实现通用的数组操作代码;
(4)利用Method对象。
反射机制的特点:优点:可以实现动态创建对象和编译,体现出很的灵活性;
缺点:对性能影响。
获取class类的方法:
1、通过对象获得class:
person.getClass();
2、通过forName:包名+类名
Class.forName("MyPackeage0602.Student")
3、通过类的静态成员变量class获得:
Student.class;
例 通过反射机制操作类
public class Test{
public static void main (String [] args){
Class <?> ca=Class.forName("MyPackage0602.User");
User user =(User) c1.newInstance();
//获得指定方法
Method method=c1.getDeclaredMethod("setName",String.class);
method.invoke(user,"建军");
System.out.println(user.getName());
//操作属性
Field field=c1.getDeclaredField("name");
field.setAccessible(true);
field.set(user,"张先生")
System.out.println(user.getName());
}
};
ORM
ORM(Object Relationship Mapping)对象关系映射。
类和表结构对应
属性和字段对应
对象和记录对应