Java?????? ??? Java??????TypeToken???????????????????????????????????????

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java?????? ??? Java??????TypeToken???????????????????????????????????????相关的知识,希望对你有一定的参考价值。

?????????round   ???java   ?????????   assign   ??????   set   array   mode   private   

??????????????????????????????????????????????????????????????????

 

private List<MyZhuiHaoDetailModel> listLottery = new ArrayList<MyZhuiHaoDetailModel>();

 

Gson gson=new Gson();

JSONObject object=new JSONObject(callbackValue);

 

listLottery =  gson.fromJson(object.getString("lists"),

new TypeToken<List<MyZhuiHaoDetailModel>>() {

}.getType());

 

GSON????????? TypeToken ?????????????????????????????????capture??????List<MyZhuiHaoDetailModel>????????????????????????????????????????????????????????????????????????Java???????????????????????????????????????????????????????????????????????????????????????????????? getType()???????????????API????????????

 

???????????????gson??????????????????Gson?????????fromJson()??????????????????Json???????????????java??????????????????

 

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

 

?????????????????????

 

??????json???????????????{"name":"name0","age":0}

 

??????:

 

Person person = gson.fromJson(str, Person.class);

??????????????????????????????json?????????????????????????????????????????????

 

????????????????????????????????????

 

??????:

 

List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());

for(int i = 0; i < ps.size() ; i++)

{

     Person p = ps.get(i);

     System.out.println(p.toString());

}

????????????????????????????????????TypeToken?????????gson??????????????????????????????????????????????????????????????????????????????

 

???????????????gson???????????????java json????????????????????????gson??????????????????????????????????????????annotation??????????????????????????????????????????gson?????????????????????annotation??????????????????????????????????????????

 

?????????java???????????????TypeToken??????????????????java?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

        ArrayList<String> stringList = Lists.newArrayList();  

       ArrayList<Integer> intList = Lists.newArrayList();        

       System.out.println("intList type is " + intList.getClass());    

      System.out.println("stringList type is " + stringList.getClass());  

      System.out.println(stringList.getClass().isAssignableFrom(intList.getClass()));

?????????????????????????????????????????????ArrayList???????????????????????????????????????String??????????????????Integer???????????????????????????????????????Class??????????????????list???????????????????????????list?????????????????????????????????

intList type is class java.util.ArrayListstringList type is class java.util.ArrayListtrue

?????????????????????java.util.ArrayList??????????????????????????????true??????????????????stringList???intList?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

TypeToken????????????????????????????????????????????????

        TypeToken<ArrayList<String>> typeToken = new TypeToken<ArrayList<String>>() {};        TypeToken<?> genericTypeToken = typeToken.resolveType(ArrayList.class.getTypeParameters()[0]);        System.out.println(genericTypeToken.getType());

??????????????????????????????????????????????????????????????????????????????resolveType?????????????????????????????????????????????????????????????????????????????????

class java.lang.String

????????????TypeToken??????????????????????????????????????????

TypeToken????????????????????????

??????

??????

getType()

???????????????java.lang.reflect.Type.

getRawType()

?????????????????????????????????

getSubtype(Class<?>)

??????????????????????????????????????????????????????????????????????????????Iterable???????????????List.class?????????????????????List???

getSupertype(Class<?>)

??????????????????????????????????????????????????????????????????????????????????????????????????????Set???????????????Iterable.class??????????????????Iterable???

isAssignableFrom(type)

????????????????????? assignable from ???????????????????????????????????????????????????true???List<? extends Number>???assignable from List??????List??????.

getTypes()

????????????Set??????????????????????????????????????????????????????????????????????????????Set???????????????classes()???interfaces()?????????????????????????????????????????????

isArray()

?????????????????????????????????????????????<? extends A[]>???

getComponentType()

???????????????????????????

 

 

Gson???????????????????????????????????????annotation??????????????????gson????????????????????????????????????java???gson????????????????????????

????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????http://www.captainbed.net

以上是关于Java?????? ??? Java??????TypeToken???????????????????????????????????????的主要内容,如果未能解决你的问题,请参考以下文章

Java 布尔运算

java [Java] Java常用代码#java

Java - 35 Java 实例

Java While 循环

Java 字符串

Java If ... Else