Java中反射的基本使用

开宗明义

反射的优点和好处:
反射可以很灵活的操作一个类,甚至这种方式在某种方面我愿称之为优雅。

Step 1.准备一个类,取名为ConstructorCollector
public class ConstructorCollector {
     ConstructorCollector() {
        System.out.println("====初始化 No Args========");
    }

     ConstructorCollector(int intArgs, String strArgs) {
        System.out.println("====初始化 int intArgs,String strArgs=======");
    }

     ConstructorCollector(int intArgs) {
        System.out.println("====初始化 int intArgs========");
    }
}

ConstructorCollector类很简单,一个无参构造,一个只有一个参数的构造,一个两个参数的构造

GetConstructors VS GetDeclaredConstructors

GetContructor和GetDeclaredContructor
这两个方法是用来实例化一个构造函数的,GetConstructors是获取所有公有(public)构造方法,而GetDeclaredConstructors获取所有的构造方法(public,private,default,protected),
接收的对象就是Constructor类型的数组

       Constructor[] c = ConstructorCollector.class.getDeclaredConstructors();
        for (Constructor cs : c) {
            System.out.println(cs);
        }
        //执行结果
		/** 
		com.imooc.reflect.ConstructorCollector()
		com.imooc.reflect.ConstructorCollector(int,java.lang.String)
		com.imooc.reflect.ConstructorCollector(int)
		**/
GetConstructor VS GetDeclaredConstructor

单数形式和复数形式,Constructors是所有,那么Constructor就是获取某个构造函数。
用法同上,只不过接收对象类型变成了Constructor

newInstance

一般来讲,实例化对象可以用new来实现,举个例子

ConstructorCollector cc=new ConstructorCollector(param1);

反射的写法

Constructor constructor = ConstructorCollector.class.getDeclaredConstructor(int.class);
ConstructorCollector constructorCollector = (ConstructorCollector)constructor.newInstance(111);
System.out.println(constructorCollector.getIntArgs());

值得注意的是,getDeclaredConstructor()填入的是类型,也就是int.class,String.class这些。
最后可得到注入的intargs值,111。

未完待续。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值