关于forName()、newInstance()、getMethod()、getClass()等区别的简略说明

39 篇文章 0 订阅
19 篇文章 0 订阅

因为最近频繁用到,只能是自己查查,总结一下,方便以后利用。

1、lass.forName( )静态方法的目的是为了动态加载类。在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。因此,Class.forName( )是动态加载类是没有用的,其最终目的是为了实例化对象。

一般的实现方式:

String carClassName = "com.etc.test5.Car";
 //创建对象
 Car car = (Car) Class.forName(carClassName).newInstance();

2、.getClass();  //得到该对象的class,后期可能会用到getField()得到该类声明的属性,getMethod()获取方法对象。

常见用法:

Method method = car.getClass().getMethod(setterMethodName, String.class);   //其中setterMethodName是setter方法的名称,String类型。

3、invoke()方法:我理解为反射赋值,比如继续上面的代码:method.invoke(car, carPropertyValue);其中Car类中有一个name变量,那个执行invoke方法后,对象car的name值则为carPropertyValue(在之前声明过)。

总结:

forName返回Class,后需要newInstance实例化;

newInstance返回T;

getClass返回Class,后需要getMethod获取方法;

getMethod返回Method;

invoke无返回值,需要用Method的对象来调用。

 

现在基础知识很弱,处于写代码全靠模仿,原理知之甚少的阶段,需要一点一点的自学,加油。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值