Java -- 反射

最近准备写关于AOP 的实现原理,但是基础过于薄弱,故而从Java反射开始学习,在未来几张,会写关于静态代理,动态代理,以及AOP的实现原理

现在贴上反射基础


1.Class类

1)在面向对象的世界里,万事万物皆对象。(java语言中,静态的成员、普通数据类型除外)
类是不是对象呢?类是(哪个类的对象呢?)谁的对象呢? 类是对象,类是java.lang.Class类的实例对象
2)这个对象到底如何表示,Fool fo= new Fool();Fool是Class类对象的实例
3 )Class.forName("java.util.Integer"),或者是class.class(.class是类默认的静态方法),或者是class.getClass()
   (c1 = A.class )=== (c2 =  A.getClass() )=== (c3 = Class.forName("com.A"));(类类型只能有一个)
   通过类类型创建对象
   从 A a = (A)c1.getInstance();//这里是无参构造方法
4)基本的数据类型
  void关键字  都存在类类型 
5)Class类的基本API操作
   2.方法的反射
1)如何获取某个方法
    方法的名称和方法的参数列表才能唯一决定某个方法
2)方法反射的操作
   method.invoke(对象,参数列表)
public static void main(String[] args) {
A a1 = new A();
//通过反射拿到A的对象
Class c = null;
c = A.class;
int a =  10,b =10;
try {
Method method = c.getDeclaredMethod("fun", new Class[]{int.class ,int.class });
method.invoke(a1, 10,10);
Method methodString  = c.getDeclaredMethod("fun", new Class[]{int.class ,int.class });
methodString.invoke(a1, "xiao","yao");

catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (NoSuchMethodException | SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值