Java之继承一个泛型类

泛型继承的原则

继承泛型类时,必须对父类中的类型参数进行初始化。

 

步骤:
1、定义一个泛型类Parent<T>   注意:定义:泛型T,使用:实际类型
2、子类继承调用。Son类定义时有两种方式初始化父类型的类型参数:

  • 法1:用子类中的泛型类型初始化父类:
    public class Son<T> extends Parent<T>{}
     
  • 法2:用具体类型初始化:
    public class Son extends Parent<String>{}
     

方法1比较常见,对方法2用法的理解,可以参考以下代码:


使用HomeFragment时,调用new HomeFragment即可,因为HomeFragment继承了BaseListFragment<HomeViewModel> 时已经用具体类型 HomeViewModel 初始化了 BaseListFragment<T extends AbsViewModel> 中的T.

 

定义BaseListFragment代码如下,可以看到尖括号内用了<T>


 

 


关于ArrayList<E>的理解

E — Element
以下代码:
ArrayList<String> = new ArrayList<String>();
ArrayList<Integer> = new ArrayList<Integer>();



MutableLiveData<String> loadState = new MutableLiveData<>(); ----LiveData框架类

protected void postState(String state) {
    if (loadState != null) {
        loadState.postValue(state);
    }
}

可以参考下面示例理解:

//定义  
class Point<T> {// 此处可以随便写标识符号   
    private T x ;        
    private T y ;        
    public void setX(T x) {//作为参数  
        this.x = x ;  
    }  
    public void setY(T y) {  
        this.y = y ;  
    }  
    public T getX() {//作为返回值  
        return this.x ;  
    }  
    public T getY() {  
        return this.y ;  
    }  
};  


//IntegerPoint使用  
Point<Integer> p = new Point<Integer>() ;   
p.setX(new Integer(100)) ;   
System.out.println(p.getX());    

  
//FloatPoint使用  
Point<Float> p = new Point<Float>() ;   
p.setX(new Float(100.12f)) ;   
System.out.println(p.getX());   

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值