search

Home  >  Q&A  >  body text

java - 这个泛型方法应该怎么写才对

我是C#转Java的,发觉Java的泛型写起来有点奇怪,求助,下面这个问题应该如何解决。

定义的方法:

public static <T> T FromJson(String json)
{
    T obj = JSON.parseObject(json, new TypeReference<T>() {});
    return obj;
}

使用的时候报错

MyClass cls2 = JsonClass.FromJson<MyClass>(str);

提示是<MyClass>这个地方错误,如果删掉,就语法上正确,但是实际运行会错误。
我是按照C#逻辑来理解些的,貌似Java不是这么一回事?

伊谢尔伦伊谢尔伦2822 days ago722

reply all(3)I'll reply

  • PHP中文网

    PHP中文网2017-04-18 09:18:34

    // 泛型方法要么直接让其推导类型
    MyClass cls2 = JsonClass.FromJson(str);
    
    // 要么这样指定
    MyClass cls2 = JsonClass.<MyClass>FromJson(str);

    So your compilation error is because you are using it in the wrong way.

    As for when you get an error when running, you should post the error message to see what went wrong.

    reply
    0
  • PHP中文网

    PHP中文网2017-04-18 09:18:34

    There is no need to specify generics when using the method

    MyClass cls2 = JsonClass.FromJson(str);

    reply
    0
  • 怪我咯

    怪我咯2017-04-18 09:18:34

    public static <T> T FromJson(String json,Class<T> clz)
    {
        return JSON.parseObject(json, new TypeReference<T>() {});
    }
    

    I don’t know if this is possible

    reply
    0
  • Cancelreply