作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在成功编写了一个完成它应该做的事情的方法之后(下面大大缩短了示例)我想重构它以不限于返回 List
的 MyEntity
而是 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/
我是一名优秀的程序员,十分优秀!