相关疑难解决方法(0)

在运行时获取泛型类

我怎样才能做到这一点?

public class GenericClass<T>
{
    public Type getMyType()
    {
        //How do I return the type of T?
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试的所有东西总是返回类型Object而不是使用的特定类型.

java generics reflection

474
推荐指数
16
解决办法
53万
查看次数

将嵌套的Class <MyInterface <T >>作为Android中的参数传递

我正在尝试创建一个包装器Retrofit来抽象我的服务实现.到目前为止,我已经成功编译了编译器:

package com.example.spark.testapp.services;

import com.example.spark.testapp.services.apis.Get;
import com.example.spark.testapp.services.apis.Post;
import com.example.spark.testapp.services.utils.*;
import com.example.spark.testapp.services.utils.Error;

import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;




public class ServiceLayer {
    public <T> void performGet(String url, final Class<Get<T>> clazz, com.example.spark.testapp.services.utils.Callback<T> callback) {
        Retrofit retrofit = new Retrofit.Builder().baseUrl("").build();
        Get<T> service = retrofit.create(clazz);
        //Pass authentication token here
        Call<T> t = service.get(url, "");
        executeCallback(callback,t);
    }

    public <T> void performPost(String url, final Class<Post<T>> clazz,com.example.spark.testapp.services.utils.Callback<T> callback) {
        Retrofit retrofit = new Retrofit.Builder().baseUrl("").build();
        Post<T> service = retrofit.create(clazz);

        //Pass authentication token …
Run Code Online (Sandbox Code Playgroud)

java generics android

15
推荐指数
1
解决办法
1332
查看次数

在通用列表的java中传递Class <T>?

我有一个从服务中读取JSON的方法,我正在使用Gson进行序列化,并使用类型参数编写了以下方法.

public T getDeserializedJSON(Class<T> aClass,String url)
{
    Reader r = getJSONDataAsReader(url);
    Gson gson = new Gson();
    return gson.fromJson(r, aClass);
}
Run Code Online (Sandbox Code Playgroud)

我正在使用json,它只返回一个类型的数组,例如

[
 { "prop":"value" }
 { "prop":"value" }
]
Run Code Online (Sandbox Code Playgroud)

我有一个映射到这个对象的java类,我们称之为MyClass.但是要使用我的方法,我需要这样做:

RestClient<ArrayList<MyClass>> restClient = new RestClient<ArrayList<MyClass>>();
ArrayList<MyClass> results = restClient.getDeserializedJSON(ArrayList<MyClass>.class, url);
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚它的语法.仅传递ArrayList.class不起作用.

那么有没有办法可以摆脱Class参数或者如何获取MyClass的ArrayList类?

java generics

12
推荐指数
3
解决办法
3万
查看次数

标签 统计

generics ×3

java ×3

android ×1

reflection ×1