java中泛型的使用

代码转载自:

http://www.eoeandroid.com/thread-541480-1-1.html

安卓中替换findviewbyid的方法:

@SuppressWarnings(“unchecked”)
public final <E extends View> E getView (int id) {
    try {
        return (E) findViewById(id);
    } catch (ClassCastException ex) {
        Log.e(TAG, “Could not cast View to concrete class.”, ex);
        throw ex;
    }
}
使用方法:

  1. TextView textView = getView(R.id.textview);
  2. Button button = getView(R.id.button);
  3. ImageView image = getView(R.id.imageview);

E指任意类型,泛型

<pre name="code" class="java">(E) findViewById(id)
 这个代码实际已经帮你转化成你需要的类(该类是继承View的),而不需要你强制转类型 

下面代码效果一样:

<span style="white-space:pre">	</span>public <V> V getview(int id) {
<span style="white-space:pre">		</span>return (V) findViewById(id);
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>public <E extends View> E getview2(int id) {
<span style="white-space:pre">		</span>return (E) findViewById(id);
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>public <T extends Object> T getview3(int id) {
<span style="white-space:pre">		</span>return (T) findViewById(id);
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>public <K extends Object> K getview4(int id) {
<span style="white-space:pre">		</span>return (K) findViewById(id);
<span style="white-space:pre">	</span>}

即K、V、T、E效果一样




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值