import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.samples.ar.entity.User;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Demo<T> {
private T t;
public <T> List<T> getOnet(List<Map<String, Object>> list, Class<T> tClass) {
//Null pointer exception in this way
//But this way is convenient, how to realize
//return (List<T>) JSONArray.parseArray(JSON.toJSONString(list), t.getClass());
return JSONArray.parseArray(JSON.toJSONString(list), tClass);
}
public static void main(String[] args) {
User user = new User();
Class<? extends User> aClass = user.getClass();
List<Map<String, Object>> list = new ArrayList<>();
for (long i = 0; i < 10; i++) {
Map<String, Object> map = new HashMap<>();
map.put("id", i);
list.add(map);
}
List<User> users = new Demo<User>().getOnet(list, User.class);
System.out.println(users);
}
}环境:Java 8,IntelliJ IDEA
如果该方法没有类<T>输入参数,则每次调用都很方便。类似于MyBatis plus的实现。
我担心图片不会被显示,所以我写出了这个方法
com.baomidou.mybatisplus.core.mapper.BaseMapper
T selectById(Serializable id);发布于 2020-11-02 18:25:28
如果方法没有class 输入参数,每次调用都很方便
当时不能使用泛型。请记住,您希望将JSON序列化为对象,因此需要通过Class<T> tClass传递一种类型的对象。然而,整个事情可以被简化:
导致Demo.的
Demo<T>中删除泛型类型删除未使用的类型private T t;.的
getOnet:公用列表getOnet(List>列表,类tClass) { return JSONArray.parseArray(JSON.toJSONString( list ),tClass);}
只要泛型类型被推断出来,这个方法的用法就会变得很简单。
List<User> users = new Main().getOnet(list, User.class);https://stackoverflow.com/questions/64643443
复制相似问题