Java重构目标类_java – 如何将方法重构为只接受类型子集的泛型方法?

在成功编写了一个完成它应该做的事情的方法之后(下面简要缩短了示例)我想重构它不限于返回一个MyEntity列表而是一个List< SomeType扩展MyParentEntity>.因此,它应该只能接受扩展MyParentEntity但能够指定其他类型的那些类型(List< MyOtherEntity>,List< MyAwesomeEntity>等).

缩短的例子:

public static List getFavList(Context context) {

String prefKey = buildKey( new MyEntity() );

List entityList = new ArrayList();

SharedPreferences settings = context.getSharedPreferences(prefKey, 0);

GSON gson = new GSON();

MyEntity entity = gson.fromJson(settings.getString(0, null), MyEntity.class);

entityList.add(entity);

return entityList;

}

我google了很多,但我没有找到正确的方法来使这项工作没有任何编译器错误.我很感激能够找到解决方案的任何指针.

解决方法:

您将需要传递Class和您传递给buildKey的对象.

public static List getFavList(

Context context, Class clazz, T key

) {

String prefKey = buildKey(key);

List entityList = new ArrayList();

SharedPreferences settings = context.getSharedPreferences(prefKey, 0);

GSON gson = new GSON();

MyEntity entity = gson.fromJson(settings.getString(0, null), clazz);

entityList.add(entity);

return entityList;

}

(我不知道buildKey应该是什么.)

标签:java,generics,refactoring

来源: https://codeday.me/bug/20190901/1785666.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值