Java GSON StackOverflowerr的改造

Java GSON StackOverflowerr的改造,java,android,gson,retrofit2,Java,Android,Gson,Retrofit2,我正在使用Gson的改进来进行HTTP请求。但是在请求之后,我得到以下错误。有人能帮我解决这个问题吗 Caused by: java.lang.StackOverflowError: stack size 1037KB at com.google.gson.internal.$Gson$Types.checkNotPrimitive($Gson$Types.java:434) at com.google.gson.internal.$Gson$Types$WildcardType

我正在使用Gson的改进来进行HTTP请求。但是在请求之后,我得到以下错误。有人能帮我解决这个问题吗

Caused by: java.lang.StackOverflowError: stack size 1037KB
    at com.google.gson.internal.$Gson$Types.checkNotPrimitive($Gson$Types.java:434)
    at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:544)
    at com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:111)
    at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:553)
    at com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:111)
    at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:546)
    at com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:111)
    at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:553)
    at com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:111)
    at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:546)
    at com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:111)
    at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:553)
原因:java.lang.StackOverflower错误:堆栈大小1037KB
位于com.google.gson.internal.$gson$Types.checkNotPrimitive($gson$Types.java:434)
位于com.google.gson.internal.$gson$Types$wildcardtypeinpl.($gson$Types.java:544)
在com.google.gson.internal.$gson$Types.canonicalize($gson$Types.java:111)
位于com.google.gson.internal.$gson$Types$wildcardtypeinpl.($gson$Types.java:553)
在com.google.gson.internal.$gson$Types.canonicalize($gson$Types.java:111)
位于com.google.gson.internal.$gson$Types$wildcardtypeinpl.($gson$Types.java:546)
在com.google.gson.internal.$gson$Types.canonicalize($gson$Types.java:111)
位于com.google.gson.internal.$gson$Types$wildcardtypeinpl.($gson$Types.java:553)
在com.google.gson.internal.$gson$Types.canonicalize($gson$Types.java:111)
位于com.google.gson.internal.$gson$Types$wildcardtypeinpl.($gson$Types.java:546)
在com.google.gson.internal.$gson$Types.canonicalize($gson$Types.java:111)
位于com.google.gson.internal.$gson$Types$wildcardtypeinpl.($gson$Types.java:553)
MainActivity.java

if (retrofit == null) {
            System.out.println("building:");
            Gson gson = new GsonBuilder()
                    .setExclusionStrategies(new ExclusionStrategy() {
                        @Override
                        public boolean shouldSkipField(FieldAttributes f) {
                            return f.getDeclaringClass().equals(RecommendedTab.class);
                        }

                        @Override
                        public boolean shouldSkipClass(Class<?> clazz) {
                            return false;
                        }
                    })
                    .create();
            retrofit = new Retrofit.Builder()
                    .baseUrl(base_url)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();
        }

        try
        {
            EventsApi eventsApiService = retrofit.create(EventsApi.class);
            Call<List<EventsData>> call = eventsApiService.getEvents(value1, value2, value3, value4, value5, value6);
            call.enqueue(new Callback<List<EventsData>>() {
                @Override
                public void onResponse(Call<List<EventsData>> call, Response<List<EventsData>> response) {
                    List<EventsData> movies = response.body();
                    recyclerView.setAdapter(new EventsAdapter(movies, getContext()));
                    System.out.println("Number of movies received: " + movies.size());
                }

                @Override
                public void onFailure(Call<List<EventsData>> call, Throwable t) {

                }
            });
if(改装==null){
System.out.println(“建筑:”);
Gson Gson=new GsonBuilder()
.SetExclutionStrategy(新的ExclutionStrategy)(){
@凌驾
公共布尔值shouldSkipField(字段属性f){
返回f.getDeclaringClass().equals(建议使用Tab.class);
}
@凌驾
公共布尔shouldSkipClass(类clazz){
返回false;
}
})
.create();
改装=新改装.Builder()
.baseUrl(基本url)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
}
尝试
{
EventsApi eventsApiService=reformation.create(EventsApi.class);
Call Call=eventsApiService.getEvents(值1、值2、值3、值4、值5、值6);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
List movies=response.body();
setAdapter(新的EventsAdapter(movies,getContext());
System.out.println(“接收的电影数量:+movies.size());
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
EventsApi.interface

public interface EventsApi {
    @GET("venues/search")
    Call<List<EventsData>> getEvents(
            @Query("a") String value1,
            @Query("b") String value2,
            @Query("c") String value3,
            @Query("d") String value4,
            @Query("e") String value5,
            @Query("f") String value6
    );
}
公共接口事件SAPI{
@获取(“场馆/搜索”)
调用getEvents(
@查询(“a”)字符串值1,
@查询(“b”)字符串值2,
@查询(“c”)字符串值3,
@查询(“d”)字符串值4,
@查询(“e”)字符串值5,
@查询(“f”)字符串值6
);
}
EventsData.java

public class EventsData
{
    private List<EventsData> results;

    public EventsData()
    { }

    public List<EventsData> getResults() {
        return results;
    }
    public void setResults(List<EventsData> results) {
        this.results = results;
    }
}
公共类事件数据
{
私人名单结果;
公共事件数据()
{ }
公共列表getResults(){
返回结果;
}
公共void setResults(列出结果){
这个结果=结果;
}
}

您的
EventsData
类只包含一个
列表
,这看起来像是一个递归地狱的配方。也许这是一个bug