如何在java中获取泛型类的类型?

时间:2015-01-24 09:17:32

标签: java android generics reflection gson

public class Network_Generic {

public static <T> void get_generic(String url, final VolleyCallback volleyCallback,T t)
{
    Network_GetString.get_String(url,new VolleyCallback() {
        @Override
        public void onSuccess(Object o) {

                String json=(String)o;
                Gson gson=new Gson();
                java.lang.reflect.Type type = new TypeToken<T>() {}.getType();

                T jsonBean = gson.fromJson(json, type);
                volleyCallback.onSuccess(jsonBean);

        }

        @Override
        public void onFailure(String error) {

            volleyCallback.onFailure(error);

        }
    });
}
public class Network_Location {
  public static void get_locations(final Integer id,final VolleyCallback volleyCallback)
{
    String url="/location/view/"+id.toString()+".json";
    Network_Generic.get_generic(url,new VolleyCallback() {
                @Override
                public void onSuccess(Object o) {
                    Json_Location_Bean json_location_bean=(Json_Location_Bean)o;
                    volleyCallback.onSuccess(json_location_bean);
                }

                @Override
                public void onFailure(String error) {
                    volleyCallback.onFailure(error);

                }
            },new Json_Location_Bean()

    );

}

在这里,我想得到&#34; T&#34;在方法get_String中,但失败了。 编译器告诉我&#34; java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap无法强制转换为Json_Location_Bean。 有人可以帮助我获得T型吗?谢谢!

1 个答案:

答案 0 :(得分:0)

怎么样

t.getClass().getName()