Java反射机制

本文探讨了Java反射机制在实现Google AdMob广告加载中的应用,通过反射获取AdView类、初始化AdSize和AdRequest,展示了如何利用反射解决跨版本冲突的问题,提供了实例代码并链接了详细教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近期项目需求,添加google的admob广告的时候发现有俩个版本。早期的版本已经发出,需要新版更新时会有冲突。所以想到了Java反射机制。

例一、

java代码:

mAdmobView = new AdView((Activity) mContext, AdSize.BANNER,
					getAdmobKey());
			mLinearLayout.addView(mAdmobView);

反射代码:

mAdmobViewClass = Class.forName("com.google.ads.AdView");

			Class<?> adSizeClass = Class.forName("com.google.ads.AdSize");
			Field bannerField = adSizeClass.getDeclaredField("BANNER");
			bannerField.setAccessible(true);
			Object bannerFieldObject = bannerField.get(adSizeClass);

			mAdmobView = mAdmobViewClass.getConstructor(Activity.class,
					adSizeClass, String.class).newInstance(mContext,
					bannerFieldObject, getAdmobKey());

1、先获取AdView类

2、初始化AdSize

3、获取AdView对象。getContructor(Activity.class,adSizeClass,String.class),参数为构造函数的参数类型。newInstance(mContext,bannerFieldObject,getAdmobKey())参数内容为构造参数的数据。


例二、

Java代码:

mAdmobRequest = new AdRequest();
mAdmobView.loadAd(mAdmobRequest);

反射代码:

Class<?> AdRequest = Class.forName("com.google.ads.AdRequest");
			Object mAdmobRequest = AdRequest.getConstructor().newInstance();

			Method loadAd = mAdmobViewClass.getMethod("loadAd",
					Class.forName("com.google.ads.AdRequest"));
			loadAd.invoke(mAdmobView, mAdmobRequest);

1、先获得AdRequest的实例,getConstructor()的参数为构造函数的参数类型,newInstance()的参数为构造函数的参数数据。

2、调用函数用类对象的函数名可以直接获取。

3、invoke调用函数。mAdmobView是object类型的AdView的对象。


好了,就总结这些吧。

还有可以参考这位大神的,很全面。看看吧:

click here!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值