Retrofit2로 도움을 청하십시오. 나는 Retrofit에서 매우 새롭다. 간단한 서버 응용 프로그램을 만듭니다. 응용 프로그램은 저널 목록을 관리합니다. 메모리 내 목록에 저널을 추가하고 저널을 ID별로 반환하십시오. Journal.java이있다 :Retrofit2 : ClassCastException : java.util.ArrayList를 retrofit2.cast로 호출 할 수 없습니다.
public interface JournalController {
@GET("journal")
Call<List<Journal>> getJournalList();
@GET("journal/{id}")
Call<Journal> getJournal(@Path("id") Integer id);
@POST("journal")
Call<Journal> addJournal(@Body Journal journal);
}
이것은 인터페이스 구현 :
@Controller
public class JournalControllerImpl implements JournalController {
// An in-memory list that the controller uses to store the Journals
private List<Journal> journals = new ArrayList<>();
@RequestMapping(value= "journal", method=RequestMethod.GET)
public @ResponseBody Call<List<Journal>> getJournalList() {
return (Call<List<Journal>>) journals;}
@RequestMapping(value= "journal/{id}", method= RequestMethod.GET)
public @ResponseBody Call<Journal> getJournal(@Path("id") Integer id) {
Journal journal = journals.get(id);
return (Call<Journal>) journal;}
@RequestMapping(value= "journal", method= RequestMethod.POST)
public @ResponseBody Call<Journal> addJournal(@Body Journal journal) {
journals.add(journal);
return (Call<Journal>) journal; }
}
이 응용 프로그램은 succesesully 시작
public class Journal {
private AtomicInteger getNewId = new AtomicInteger(0);
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("name")
@Expose
private String name;
public Journal(String name) {
this.id = getNewId.incrementAndGet();
this.name = name;}
public Integer getId() {return id;}
public String getName() {return name;}
}
는 컨트롤러 인터페이스가 있습니다. 응용 프로그램의 시작하는 동안 콘솔 출력 : 매핑
"{[/ 저널, 방법 = [GET]}"공공 retrofit2.Call 위에> main.JournalControllerImpl.getJournalList() 매핑
"{[/ 저널 ], 메소드 = [POST]} "public retrofit2.Call main.JournalControllerImpl.addJournal (main.Journal)
"{[journal] .Call main.JournalControllerImpl.getJournal (java.lang.Integer)
T 브라우저에서 URL http://localhost:8080/journal을 실행하려고합니다 (또는 GET HttpRequest http://localhost:8080/journal).
: 응용 프로그램 출력에 오류가 있습니다 "... java.lang.ClassCastException가 : 인 java.util.ArrayList는 retrofit2.Call 캐스트 할 수없는이 ..."
당신은 무슨 추측 할 수? java.util.ArrayList를 호출하여 변환 할 때 실제로 문제가 있습니까? (내가으로 CopyOnWriteArrayList에 tryed했지만 문제가 해결되지 않습니다.
미리 감사드립니다.
'Journal'가'를 호출하지 않습니다 '. 어떤 방법으로 돌아 오기 전에'Call'에'Journal'을 싸야합니다. –