【已解决】 (已解决)Retrofit 响应 强转 编译不通过
发现下面的问题是lombok引起的
用了lombok的 @Data注解自动生成的get set方法,好像被retrofit动态代理之后,get set方法就拿不到了,手动生成get set 方法就没问题了
--------------------------------------------------------------------------------
参考这里 https://www.sunofbeach.net/a/1202592838370578432 编写了Retrofit的请求
请求是成功的,但是在将 响应强转为 指定类型时,编译不通过。
详情看如下两张图:


实体类如下:
package cn.tyl.serial_port_test2.http.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class HttpResponse<T> {
private Integer code;
private String message;
private T data;
}
完整的请求如下:
//测试代码:发送一个http请求
LocationInterface locationInterface = RetrofitCreator.getInstance().getRetrofit().create(LocationInterface.class);
Call locationList = locationInterface.getLocationList(1, 10);
locationList.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
Log.d(TAG, "response -- > " + response.body().toString());
HttpResponse body = (HttpResponse) response.body();
Object data = body.getData();//这里报错了
Log.d(TAG, "onResponse: "+data.toString());
}
@Override
public void onFailure(Call call, Throwable t) {
Log.d(TAG, "exception -- > " + t.toString());
}
});
lombok的问题,实体类不要用lombok,用idea的快捷键来生成get set 即可
我好久没写android了,记得不太清楚了。我记得body好像只可以获取一次。
我猜你的需求是,json转对象,也就是java bean。可能ResponseBody就是你的创建的bean吧。
你要做的是json转bean,可以使用Gson工具做这个事情。可以了解下Gson,狗剩这个工具。
是因为你HttpResponse需要传一个泛型的类型吧,然后你强转后你的T就是空的