gpt4 book ai didi

java - 如何将方法重构为仅接受类型子集的通用方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:37 24 4
gpt4 key购买 nike

在成功编写了一个完成它应该做的事情的方法之后(下面大大缩短了示例)我想重构它以不限于返回 ListMyEntity而是 List<SomeType extends MyParentEntity> .所以它应该只能接受那些扩展我的 MyParentEntity 的类型但能够指定另一种类型( List<MyOtherEntity>List<MyAwesomeEntity> 等)。

简化示例:

 public static List<MyEntity> getFavList(Context context) {

String prefKey = buildKey( new MyEntity() );
List<MyEntity> entityList = new ArrayList<MyEntity>();

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;
}

我在谷歌上搜索了很多,但没有找到正确的方法来使这项工作没有任何编译器错误。如果有任何指向解决方案的指示,我将不胜感激。

最佳答案

您需要传入 Class 和您要传递给 buildKey 的对象。

public static <T extend MyParentEntity> List<T> getFavList(
Context context, Class<T> clazz, T key
) {

String prefKey = buildKey(key);
List<T> entityList = new ArrayList<T>();

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 - 如何将方法重构为仅接受类型子集的通用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12480741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com