自从ASs升级到3.0以后,不用在对findViewById进行强转,因此我们可以用一个泛型来实现这类强制类型转换的代码,使其具有更好的安全性和可读性。
因此我们用泛型的形式来对findViewById进行封装下
代码如下
private View mRootView = null;
public <T extends View> T $(@IdRes int viewId) {
if (mRootView != null) {
return mRootView.findViewById(viewId);
}
throw new NullPointerException("rootView is null");
}
在实际运用中我们就可以
mRefreshLayout = $(R.id.srl_index);
………………
是声明这是一个泛型方法,同时extends View限制了返回的类型必须是是View的子类
泛型程序设计以为着编写的代码可以被很多不同类型的对象所重用。例如,我们并不希望为聚集String和File对象分别设计不同的类。实际上,也不需要这样做,因为一个ArrayList类可以聚集任何类型的对象。这是一个泛型程序设计的实例。
实际上,在Java增加泛型类之前已经有一个ArrayList类。