如何在数组里面保存多种泛型

需求:分配的一个任务关于搜索的修改,用户点击搜索的时候实际上请求了N个接口,不同接口返回的bean是不同的,实际的展示效果用的是recyclerView,那么就需要我们封装一个统一bean。

我们知道通过创建一个集合,集合里面存储不同的数据bean,然后拿出来强转回去这样的方式是不行的,因为java是假的泛型,编译时候会进行泛型擦除,变成Object,编译器通过预先留下的注解来描述说明对应的泛型,但是没有办法给你说明无数种,比如一个Father,一个Son,它没有办法给你记住超过一个类型的泛型。

我们平时的写法java:List<?> list = new ArrayList<?>();
其实就是变向说明了编译器只能给你记住一种类型

一开始我想的是通过创建一个bean包含所有的其他bean的数据类,但是我看了之前同事写的代码之后发现了另外一种更好的方式。

之前想的是

class AllBean{
	public Bean1 bean1;
	public Bean2 bean2;
	public Bean3 bean3;
	public Bean4 bean4;
}

然后再用一个集合把它存储起来:List

项目里用的是:List<AllBean<?>>

class AllBean<T>{
	public int type;
	public int priority;
	public T result;
}

这个T可以是数组,可以是String ,后面再强转回来就可以了。

相当于数组里面存储的都是AllBean,AllBean里面存储了各种类型的T,这样就成功把各种泛型都存储到一个数组里面了。

详细:

calss People<T>{
public int type;
	public int priority;
	public T result;
}
class Father{
public String name;
}
class Son{
public String name;
}
List<People<?>> list = new ArrayList<People<?>>();
list.add(new People(new Father(1,"father")));
list.add(new People(new Son(2,"son")));
下面代码是成立的
(Father)list.get(0).result;
(Son)list.get(0).result;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值