前言

很多时候传数据需要只含两个变量的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

万能的Entry,两个变量的Model/JavaBean再也不用写了!的更多相关文章

  1. js两个变量互换值

    js两个变量交换值 这个问题看似很基础,但是有很多的实现方式,你知道的有多少呢,网上也有很多的方法,下面就来总结一下 中间变量(临时变量) 临时变量其实很好理解,通过一个中间变量进行交换值 var s ...

  2. 两个变量交换的四种方法(Java)

    对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) class TestEV //创建一个类 { public static ...

  3. SHLVL 和 BASH_SUBSHELL 两个变量的区别

    SHLVL 是记录多个 Bash 进程实例嵌套深度的累加器,而 BASH_SUBSHELL 是记录一个 Bash 进程实例中多个子 Shell(subshell)嵌套深度的累加器. 看不懂上面这句话不 ...

  4. ThinkPHP3.2中if判断条件是两个变量

    <select name="typeId"> <foreach name="typeInfo" item="v"> ...

  5. JavaScript中交换两个变量的值得三种做法(代码实现)

    javascript在编程时经常会涉及到如何交换两个变量的值,例如常见的冒泡排序,快速排序等:下面我讲根据自己近期所学总结几种常见的交换两个变量值的方法: 方法一:借助第三方变量交换两个变量的值 va ...

  6. Oracle定义两个变量,并对两个变量的值的长度进行判断

    这个例子其实很简单,但是往往简单的东西如果不用心就会漏洞百出,简单的一个逻辑判断,是为了给复杂逻辑判断做出铺垫 语法格式: if<condition_expression> then pl ...

  7. Java基础知识强化05:不借助第三个变量实现两个变量互换

    1. 不借助第三个变量实现两个变量互换 代码如下: package himi.hebao; /** * 不借助第三个变量实现,两个变量互换 * 这里利用^异或实现两个变量的互换 * @author A ...

  8. c# 交换两个变量

    使用临时变量: 有人会问只使用两个变量交换,怎么办? 不实用临时变量: 第一种: a=a+b; b=a-b; a=a-b; 第二种: 异或:相同是0,不同是1 上面是整型的,那么字符串可以直接异或吗? ...

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

    概要  本文主要描述,如何不使用中间值,将两个变量的值进行交换. 一.普通做法 var a = 1, b = 2, tmp; tmp = a; a = b; b = tmp;  普通的做法就是声明多一 ...

随机推荐

  1. QT中使用 slot 传递 opencv 中得Mat对象以及 使用多线程集成开源代码。

    关于 slot传递 Mat 对象 以前一直是使用 Qtimer 定时器,设定超时后读取 dialog 对象的 Mat成员实现在 UI 里显示图像,发现这样对以后集成其他面向过程的代码增加了复杂度. 所 ...

  2. LeetCode题解——ZigZag Conversion

    题目: 把一个字符串按照Z型排列后打印出来,例如 "PAYPALISHIRING" 重新排列后为3行,即 P A H N A P L S I I G Y I R 那么输出为&quo ...

  3. JDBCTemplate.java

    package com.pk.xjgs.util; import java.sql.Connection; import java.sql.SQLException; import java.util ...

  4. javascript——继承

    内容: 1.继承的概念.继承分为那几种继承及各种继承的区别 2.js中有那几种继承方式及各种继承的优缺点 3.总结

  5. c++11信号量实现

    c++11中有 mutex (互斥量),有 condition_variable (条件变量),并没有 semaphore (信号量).信号量,操作系统中一般都有提,后来 google 说可以使用 m ...

  6. 命令ls

    ls -a  显示所有文件,包括隐藏文件(.开头的文件,配置文件常为隐藏文件)ls -l  显示详细信息ls -R  递归显示子目录结构ls -ld  显示目标目录的详细信息(并不返回目录里的内容)

  7. php支持rewrite 时创建.htaccess文件

    1.win+r 快捷键 运行中输入cmd 2.进入dos界面:输入copy con .htaccess   3.回车后可以输入内容,再次回车即可产生文件

  8. Mac安装wget的两种方法

    ​ 第一种.传统的安装包 A - 从ftp://ftp.gnu.org/gnu/wget/下载到最新的wget安装包到本地 B - 然后通过终端tar -zxvf命令解压到我们某个目录 C - 然后依 ...

  9. Enterprise Suse运维

    1,Suse CDH4安装 wget archive.cloudera.com/cdh4/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.x86_ ...

  10. DTD - Attributes

    In a DTD, attributes are declared with an ATTLIST declaration. Declaring Attributes An attribute dec ...