泛型的高级用法

1泛型的好处:
1把运行时的错误,提前到编译时
2无需强转
3健壮性,复用

创建一个空接口便于扩展

/**
 * 响应接口定义(方便使用泛型扩展旧的响应体类型,比如可能有多个类型的响应结构体)
 * 
 */
public interface IVideoCmdAck {
}
//旧的响应结构体
public class CMDVideoAck  implements IVideoCmdAck {
    private String msgType;
    private String param1;
    private String param2;

    private String errorCode;
    private String errorMsg;
    private String token;
    private String clientID;
    private String sessionID;



    public CMDVideoAck() {
    }

    public CMDVideoAck(String _msgType, String _param1, String _param2) {
        msgType = _msgType;
        param1 = _param1;
        param2 = _param2;
    }

    public String getMsgType() {
        return msgType;
    }

    public void setMsgType(String _msgType) {
        msgType = _msgType;
    }

    public String getParam1() {
        return param1;
    }

    public void setParam1(String _param1) {
        param1 = _param1;
    }

    public String getParam2() {
        return param2;
    }

    public void setParam2(String _param2) {
        param2 = _param2;
    }

    public String getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }

    public String getErrorMsg() {
        return errorMsg;
    }

    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public String getClientID() {
        return clientID;
    }

    public void setClientID(String clientID) {
        this.clientID = clientID;
    }

    public String getSessionID() {
        return sessionID;
    }

    public void setSessionID(String sessionID) {
        this.sessionID = sessionID;
    }

    @Override
    public String toString() {
        return "CMDVideoAck{" +
                "msgType='" + msgType + '\'' +
                ", param1='" + param1 + '\'' +
                ", param2='" + param2 + '\'' +
                ", errorCode='" + errorCode + '\'' +
                ", errorMsg='" + errorMsg + '\'' +
                ", token='" + token + '\'' +
                ", clientID='" + clientID + '\'' +
                ", sessionID='" + sessionID + '\'' +
                '}';
    }
}
   /**
     * 转换为旧回应
     *
     * @param hisenseVideoCmdAck
     * @param <T>
     * @return
     */
    public static <T extends IVideoCmdAck> T map(HisenseVideoCmdAck hisenseVideoCmdAck) {
        T videoCmdAck;
        switch (hisenseVideoCmdAck.getMsgType()) {
            //注册
            case "register": {
                //TODO 部分参数缺失
                videoCmdAck = transform(hisenseVideoCmdAck.getMsgType(), String.valueOf(hisenseVideoCmdAck.getCode()),
                        hisenseVideoCmdAck.getMessage(), null,
                        null, (String) hisenseVideoCmdAck.getData().get("token"),
                        "0", null);
                Log.e(TAG,"receive=>"+ JSON.toJSONString(hisenseVideoCmdAck));
                break;
            }
            case "createRoom": {
                //TODO 响应数据转换
                videoCmdAck = transform(hisenseVideoCmdAck.getMsgType(), String.valueOf(hisenseVideoCmdAck.getCode()),
                        hisenseVideoCmdAck.getMessage(), null,
                        null, null,
                        null, null);
                Log.e(TAG,"createRoom receive=>"+ JSON.toJSONString(hisenseVideoCmdAck));
                break;
            }



            //默认为空
            default:
                videoCmdAck = null;
                break;
        }
        return videoCmdAck;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值