static泛型方法

今天写一个static泛型方法,在本地eclipse没有问题,在服务器上编译不过去。

public static <T> T fromJson(String jsonStr, Type type){
return gson.fromJson(jsonStr, type);
}

调用时用

SomeClass.fromJson(itemStr, new TypeToken<Map<Integer, Integer>>(){}.getType());

方法实际参数表中不能获得足够的类型信息,则要在方法体内转换。

public static <T> T fromJson(String jsonStr, Type type){
return (T)gson.fromJson(jsonStr, type);
}

改成如何则没用问题。

查看java泛型方法的使用有两种。
1. <对象名|类名>.<实际类型>方法名(实际参数表);
2. [对象名|类名].方法名(实际参数表);
当编译器不能从实际参数表中获得足够的类型信息时要用第一种方法。
(jdk1.5要用第一种,jdk1.6两种都行)

SomeClass.<Map<Integer, Integer>>fromJson(itemStr, new TypeToken<Map<Integer, Integer>>(){}.getType());

定义时:
[访问权限修饰符] [static] [final] <类型参数列表> 返回值类型 方法名([形式参数列表])

附Gson中的源码为:

@SuppressWarnings("unchecked")
public <T> T fromJson(String json, Type typeOfT) throws JsonParseException {
StringReader reader = new StringReader(json);
T target = (T) fromJson(reader, typeOfT);
return target;
}

@SuppressWarnings("unchecked")
public <T> T fromJson(Reader json, Type typeOfT) throws JsonParseException {
JsonElement root = new JsonParser().parse(json);
T target = (T) fromJson(root, typeOfT);
return target;
}

@SuppressWarnings("unchecked")
public <T> T fromJson(JsonElement json, Type typeOfT) throws JsonParseException {
if (json == null) {
return null;
}
JsonDeserializationContext context = new JsonDeserializationContextDefault(
createDefaultObjectNavigatorFactory(deserializationStrategy), deserializers,
objectConstructor);
T target = (T) context.deserialize(json, typeOfT);
return target;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值