泛型
使得代码能够应用于”某种不确定类型”,而不是一个确定的类或是接口。
T –> type
E –> element
K –> key
V –> value
N –> number
- 泛型类
不确定类型,使用类型参数,类名 +<T> - 泛型接口,用法同泛型类
- 泛型方法
public<T>void setParams(T t){}
Example0:
/*
** Simple ViewHolder
*/
public class ViewHolder {
@SuppressWarnings("unchecked")
public static <T extends View> T get(View view, int id) {
SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();
if (viewHolder == null) {
iewHolder = new SparseArray();
view.setTag(viewHolder);
}
View childView = viewHolder.get(id);
if (childView == null) {
childView = view.findViewById(id);
viewHolder.put(id, childView);
}
return (T) childView;
}
}
@Override
public View getView (int position,View convertView,ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item,parent,false);
}
//应用实例
Button btn = ViewHolder.get(convertView,R.id.btn);
return convertView;
}
Example1:
/*
** get View by ID
*/
public class BaseActivity extends AppCompatActivity {
//编译器自动强制转化
public <T extends View> T findView(@IdRes int resId){
return (T)findViewById(resId);
}
}





近期评论