Java反射、注解

本文详细介绍了Java反射机制,包括如何访问构造函数、成员变量和方法,并探讨了注解的使用,如@Target和@Retention。反射与注解结合,能增强代码的灵活性,常用于框架开发。
摘要由CSDN通过智能技术生成

最近本着不求甚解的态度重温了一下主流框架的源码,所以趁热打铁的总结一下,学习框架或开发框架所必备的基础知识:

一、反射

1.1、简介

本文简单总结一下Java反射和注解,反射可以算是必备条件了,基本学习的主流框架中都会看到反射的身影,他的灵活使用也为很多逻辑的扩展提供了可能,通过Java的反射机制,可以在程序中访问已经加载到JVM中的Java对象的描述,实现访问、检测、修复和修改描述Java本身对象的功能,Java中的java.lang.reflect包提供使用注解功能。

Java中的所有类均即成了Object类,在Object类中定义了getClass方法,该方法返回一个Class的对象:

Class c = object.getClass();

利用返回的Class,即可访问Class描述信息,如:属性、方法‘构造函数等;

1.2、访问构造函数

  • Java提供了一下通过反射获取构造函数的方法:
  1. getConstructors():获取权限位Public的构造函数
  2. getConstructors(Class<?> … parameterTypes):获取权限为public且指定参数类型的构造函数
  3. getDeclaredConstructors():按照声明顺序返回所有构造函数,包private类型
  4. getDeclaredConstructors(Class<?> … parameterTypes):获取指定参数类型的构造函数
  • 针对Constructor常用的方法:
  1. isVarArgs():是否允许可变数量参数,返回boolean ,true表示有,false表示没有
  2. getParameterTypes():按照声明的顺序返回参数类型
  3. getExceptionTypes():返回抛出异常的类型
  4. newInstance():根据传入的参数调用构造函数创建实例
  5. setAccessible():默认不允许反射privite修饰的方法和属性,但如果先执行并设置为true,则可以反射
  6. getModifiers():获得可以解析出方法修饰符的整数
  • Modifier常用的解析方法

  1. isPublic(int mode):是否为Public修饰符
  2. isProtected(int mode):是否为Protected修饰符
  3. isPrivate(int mode):是否为Private修饰符
  4. isStatic(int mode):是否为Static修饰符
  5. isFinal(int mode):是否为Final修饰符
  6. toString(int mode):以字符串返回修饰符
  • 实例:
  1. 创建实例ConstructExample
public class ConstructorExample {

   int number;
   public String name;
   protected float aFloat;
   private ConstructorExample() {
   }

   protected ConstructorExample(int number) {
      this.number = number;
   }

   public ConstructorExample(String name, int number) throws NumberFormatException {
      this.number = number;
      this.name = name;
   }

   public void prinln() {
      System.out.println("name = " + name);
      System.out.println("number = " + number)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值