#android #kotlin #decompiling
#Android #kotlin #декомпиляция
Вопрос:
Я декомпилировал Android apk (код Kotlin), пытаясь понять код, и наткнулся на это:
public final class RetrofitJSONArrayConverter extends Factory {
public static final Companion Companion = new Companion();
private static final MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=UTF-8");
@Metadata(bv = {1, 0, 3}, d1 = {"u0000u0012nu0002u0018u0002nu0002u0010u0000nu0002bu0002nu0002u0018u0002nu0000bu0003u0018u00002u00020u0001Bu0007bu0002¢u0006u0002u0010u0002Ru0010u0010u0003u001au0004u0018u00010u0004Xu0004¢u0006u0002nu0000¨u0006u0005"}, d2 = {"Lio/voiapp/voi/util/RetrofitJSONArrayConverter$Companion;", "", "()V", "MEDIA_TYPE", "Lokhttp3/MediaType;", "app_release"}, k = 1, mv = {1, 1, 13})
/* compiled from: RetrofitJSONArrayConverter.kt */
public static final class Companion {
private Companion() {
}
}
@Nullable
public Converter<ResponseBody, ?> responseBodyConverter(@NotNull Type type, @NotNull Annotation[] annotationArr, @NotNull Retrofit retrofit) {
Intrinsics.checkParameterIsNotNull(type, "type");
Intrinsics.checkParameterIsNotNull(annotationArr, "annotations");
Intrinsics.checkParameterIsNotNull(retrofit, "retrofit");
return Intrinsics.areEqual((Object) JSONArray.class, (Object) type) != null ? (Converter) RetrofitJSONArrayConverter$responseBodyConverter$1.INSTANCE : null;
}
@Nullable
public Converter<?, RequestBody> requestBodyConverter(@NotNull Type type, @NotNull Annotation[] annotationArr, @NotNull Annotation[] annotationArr2, @NotNull Retrofit retrofit) {
Intrinsics.checkParameterIsNotNull(type, "type");
Intrinsics.checkParameterIsNotNull(annotationArr, "parameterAnnotations");
Intrinsics.checkParameterIsNotNull(annotationArr2, "methodAnnotations");
Intrinsics.checkParameterIsNotNull(retrofit, "retrofit");
return Intrinsics.areEqual((Object) JSONArray.class, (Object) type) != null ? (Converter) RetrofitJSONArrayConverter$requestBodyConverter$1.INSTANCE : null;
}
}
Я знаю, что код Kotlin может быть сильно неверно истолкован java-декомпилятором
но как декомпилятор может пропустить все аргументы этого метода
Есть какие-нибудь мысли по этому поводу?
Комментарии:
1. Почему, что с этим не так?
2. У requestBodyConverter и responseBodyConverter есть много аргументов, которые никогда не используются
3. И… почему это проблема? Конечно, они могли быть использованы, но не в данном конкретном случае .
4. Это
Converter.Factory
для модернизации.requestBodyConverter
иresponseBodyConverter
используются Retrofit, сигнатуры методов также поступают из Retrofit. Очевидно, что если вы хотите понять, для чего предназначены эти аргументы метода, вам следует прочитать документацию по модернизации, в частности square.github.io/retrofit/2.x/retrofit/retrofit2 /…5. Спасибо, теперь я понимаю