2019独角兽企业重金招聘Python工程师标准>>>

前言

很多时候传数据需要只含两个变量的Model/JavaBean,但就为了两个变量去写一个Model/JavaBean实在是麻烦,而且类型固定重用性低。比如:

1.网格显示的头像-名称 需要 String-String类型的一个GridBean

2.日期选择器的Item 需要Boolean-String类型的一个GridPickerItemBean

3.Http请求类参数 需要String-Object类型的一个Parameter

。。。

有什么方法可以不用写一大堆这样的自定义Model/JavaBean吗?

用Map<K, V> 或Set<T> ?

很多地方(比如Adapter中的数据列表)都要求序列化,而Map(包括LinkedHashMap) 和 Set(包括LinkedHashSet)都没有get(int index)方法,不能满足需求。

大家知道,List支持序列化,有get(int index)方法,加上Entry<K, V>里面的K, V都是自定义类型,所以用List<Entry<K, V>>既支持序列化,又能储存两个任意类型变量。

用SDK里的Entry?

SDK内提供了3种Entry

DropBoxManager.Entry只有这几种Constructor,明显不能满足需求

KeyStrore.Entry不能存取数据,明显不能满足需求

Map.Entry只有一个构造器,且必须在构造时实现里面几个抽象方法,使用太麻烦,还不能setKey

所以我写了一个Entry<K, V>来解决以上问题。

ZBLibrary万能Entry<K, V> 使用方法

只需要修改Entry<K, V>中的 K 和 V 为任何你需要的类型,其它和普通的Model/JavaBean一样。

以上面3个Model/JavaBean使用场景为例:

先将Entry<K, V>放到工程中,然后

  1. 删除GridBean,其它类中的GridBean全部改为Entry<String, String>

  2. 删除GridPickerItemBean,其它类中的GridPickerItemBean全部改为Entry<Boolean, String>

  3. 删除Parameter,其它类中的Parameter全部改为Entry<String, Object>

如果不想删除原来的Model/JavaBean,还可以通过继承Entry<K, V>来简化原来的Model/JavaBean:

  1. GridBean extends Entry<String, String>

  2. GridPickerItemBean extends Entry<Boolean, String>

  3. Parameter extends Entry<String, Object>

Entry<K, V>下载地址(欢迎Star,欢迎Fork)

https://github.com/TommyLemon/Android-ZBLibrary/blob/master/ZBLibrary(ADT)/ZBLibrary/src/zuo/biao/library/bean/Entry.java

转载于:https://my.oschina.net/tommylemon/blog/671895

万能的Entry,两个变量的Model/JavaBean再也不用写了!相关推荐

  1. 【C语言刷题】交换两个变量(包含不创建临时变量)的解法

    目录 一.常规方法(引入空瓶变量) 二.题目要求,不允许创建临时变量 2.1 通过两数加法实现交换 2.2 按位异或操作符实现交换 题目:写代码实现两个变量的交换.(不允许创建临时变量) 一.常规方法 ...

  2. python使用matplotlib可视化、使用xcorr函数可视化两个变量的互相关图、使用acorr函数可视化自相关图像

    python使用matplotlib可视化.使用xcorr函数可视化两个变量的互相关图.使用acorr函数可视化自相关图像 目录

  3. R创建两个变量的直方图

    R创建两个变量的直方图 直方图是可视化给定变量值分布的有效方法. 要为R中的一个变量创建直方图,可以使用hist()函数.要为R中的两个变量创建直方图,可以使用以下语法: hist(variable1 ...

  4. java判断两个int相等_Java 判断两个变量是否相等

    判断两个变量是否相等的方式有两种:利用运算符 == 利用equals方法 (1)比较基本Java基本数据类型 比较基本数据类型,只能用"==",不能用equals,这里比较的是两个 ...

  5. 两个变量交换值 和按位异或的理解

    2019独角兽企业重金招聘Python工程师标准>>> 第一种方法:大家会借助第三个变量来实现: 如:tmp=A;A=B;B=tmp; 这种方法需要借助第三变量来实现: 第二种方法: ...

  6. JavaScript两个变量交换值(不使用临时变量)

    概要 本文主要描述,如何不使用中间值,将两个变量的值进行交换.  前三种只适用于number类型的数值交换,第四和第五种适合其他类型. 一.普通做法 var a = 1,b = 2,tmp;tmp = ...

  7. 互换两个变量,不使用中间变量

    第一种方法: a=a+b; b=a-b; a=a-b;   代码如下: #include "stdio.h" int main(void) {int a,b;printf(&quo ...

  8. 不用临时变量,交换两个变量的值

    不用临时变量,交换两个变量的值 a=a^b;     b=a^b;     a=a^b; 或者   a=a+b;     b=a-b;     a=a-b;

  9. 用异或来交换两个变量能提快速度是错误的

    在进行两个变量的时候,常常会看到有些书误人子弟的推荐使用异或的方式: 方式一 {   x = x ^ y; y = x ^ y; x = x ^ y; } 而不是採用暂时变量实现交换: 方式二 { i ...

最新文章

  1. java paintComponent的一些解读
  2. Struts2增删改查 myeclipse开发文档加项目源码及eclipse开发项目源码
  3. 第三十三章 机械化印刷
  4. 高级语言程序设计II 实验报告三c++使用文本文件和二进制文件的读写比较两者的区别和优劣...
  5. 一些JavaScript题目
  6. zabbix添加表达式
  7. 【渝粤教育】国家开放大学2018年秋季 0716-21T工程建设法规 参考试题
  8. 图论之单源最短路径问题
  9. 微信公众号H5页面:禁止分享操作
  10. 思科为计算机配置ip命令,思科路由器配置IP方法
  11. 两台电脑之间使用ntp做时间同步的总结
  12. html图片的隐藏与显示,Jquery中使用show()与hide()方法动画显示和隐藏图片
  13. C#查询自己的公网IP接口(有服务器)
  14. 移动广告平台KeyMob:整合多家主流手机广告平台
  15. win7计算机网络连接,笔记本win7无线网络红叉电脑网络连接不可用的解决方法
  16. 疑因内部宫斗被离职,中兴70后程序员从公司坠楼 ​​​​
  17. 最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官
  18. 脉冲响应与频率响应的关系
  19. 带电检测必要性_绝缘电阻测试的重要性
  20. 如何修改localhost为自己指定的域名

热门文章

  1. C# 9.0中的新增功能 - 译
  2. 尝试在wireshark中查找密码
  3. jquery、js父子页面操作总结
  4. 图解VC++2012编译安装GDAL1.11.0和入门例子
  5. 图解操作系统研发与探索教程
  6. 关于我之前写的修改Windows系统Dos下显示的用户名之再修改测试
  7. Delphi控制Excel输出上标示例
  8. HttpContext.Current.Cache 过期时间
  9. 【转】【QT】 Threads, Events and QObjects
  10. 复原所有面板设置+剪切板