2017-07-28 19 views
7

Jak przekonwertować następujące adnotacje Swagger z Java na Kotlin?Jak korzystać z adnotacji Swagger @ ApiResponses w Kotlin?

@ApiResponses(value = { @ApiResponse(code = 200, message = "Given admin user found"), 
      @ApiResponse(code = 404, message = "..."), 
      @ApiResponse(code = 500, message = "..."), 
      @ApiResponse(code = 400, message = "..."), 
      @ApiResponse(code = 412, message = "...") }) 

nie działa:

@ApiResponses(value = listOf( 
     ApiResponse(code = 200, message = "..."), 
     ApiResponse(code = 404, message = "..."), 
     ApiResponse(code = 500, message = "..."), 
     ApiResponse(code = 400, message = "..."), 
     ApiResponse(code = 412, message = "..."))) 

Błąd jest:

Type inference failed. Expected type mismatch: inferred type is List but ApiResponse was expected

To działa, gdy używam tylko jeden @ApiResponse zamiast listOf(), ale muszę zdefiniować bardziej @ApiResponse(s).

używam Swagger 2.5.0

+0

Adnotacje spodziewać Tablice, a nie listy, więc spróbuj użyć funkcji 'arrayOf' zamiast' listOf() ' – Robin

+0

Teraz mam błąd:' Wnioskowanie typu nie powiodło się. Oczekiwana niezgodność typu: wywnioskowany typ to Array , ale oczekiwano ApiResponse. " – Frido

+0

Tak, to jest bardzo dziwne. Kusiło mnie, aby powiedzieć, że to może być błąd w Kotlinie – Plog

Odpowiedz

6

Jak stwierdzono w the Kotlin Language Reference:

If the value argument [of an Annotation] in Java has an array type, it becomes a vararg parameter in Kotlin

Tak więc, aby uczynić swoją przykładową pracę, trzeba umieścić go tak:

@ApiResponses(
    ApiResponse(code = 200, message = "..."), 
    ApiResponse(code = 404, message = "..."), 
    ApiResponse(code = 500, message = "..."), 
    ApiResponse(code = 400, message = "..."), 
    ApiResponse(code = 412, message = "...") 
) 
Powiązane problemy