反射与注解
反射与注解
反射就是通过一个类名(字符串)对类进行加载,获取类的信息,并对该类创建对象调用方法等操作。
一、类对象
类对象是描述类的信息的对象。
包含类有哪些属性、方法、构造方法等。
有三种获取方式:
二、反射的用法
当获得类对象后,可以获取该描述信息中的所有属性,方法,构造方法等信息,并且可以依据这些信息动态的创建对象,给属性赋值,调用方法。
2.1 反射操作属性
2.2 反射操作方法
2.3 反射访问构造方法
三、设计模式
3.1 工厂模式
使用工厂来实现对象的创建。
3.1.1 简单工厂
工厂直接提供各种对象的创建。
3.1.2 抽象工厂
工厂类作为一个父类,定义了该工厂能够生产的对象,但是没有具体的实现,需要自己定义一个工厂的子类去生产相应的对象。
3.2 单例模式
Singleton,表示该类只能创建一个对象。例如上面的工厂对象,在项目中就只需要创建一个。
3.2.1 饿汉(eager)模式
一开始就创建对象(能创建对象就创建)。
缺点是加载时创建对象,比较慢,使用时比较快。
3.2.2 懒汉(lazy)模式
一开始不创建对象,到使用时才创建。
优点是加载时不创建对象,会比较快,第一次使用时创建对象,相对较慢。
上面的代码是有线程安全问题的,应该使用加锁的方式来解决线程安全问题。
使用内部类来实现。
四、枚举
枚举是一个特殊的类,是 JDK1.5 之后才有,是 final 的,通常用来列举一些值。
4.1 枚举的基本使用
以下是一个使用常量的案例:
为了让用户调用时,如果不用指定的常量,会出现编译错误,推荐使用枚举。
4.2 枚举的高级使用
枚举是一个特殊的类,所以也能定义属性方法等。
五、注解
5.1 注解的概念
注解(Annotation),是在程序中的特殊标记,一般用来代替配置文件。
基本语法:
@类名,例如:@Override
定义方式:
public @interface 名称{
}
5.2 自定义注解
定义一个自动读取文件的注解。
工具类的定义:
使用:
5.3 元注解
元注解:用在注解上的注解。
元数据:描述数据的数据。(一般指配置文件,xml 等)
自定义的注解上至少应该有以下元注解:
@Target(ElementType.METHOD)
:表示自定义的注解使用的位置(方法、属性、变量、类等)
@Retention(RetentionPolicy.SOURCE)
:表示自定义的注解使用的时机(源代码、运行时)还有两个系统提供的元注解:
@Inherited
:表示该注解是否可以继承(组合注解)
@Documented
:表示该注解是否生成文档
- 感谢你赐予我前进的力量