将GsonBuilder转换为Kotlin

Zer*_*One 8 java android gson kotlin

有谁知道如何将此代码转换为kotlin

GsonBuilder builder = new GsonBuilder();
builder.setLenient();
builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
        @Override
        public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
            if (json.getAsJsonPrimitive().isNumber()) {
                return new Date(json.getAsJsonPrimitive().getAsLong() * 1000);
            } else {
                return null;
            }
        }
    });
return builder.create();
Run Code Online (Sandbox Code Playgroud)

然后,我试过了

val builder = GsonBuilder()
builder.setLenient()
builder.registerTypeAdapter(Date::class.java,.........)
return builder.create()
Run Code Online (Sandbox Code Playgroud)

.....我无法弄清楚如何转换代码

hot*_*key 9

您询问的代码行可以转换为以下Kotlin代码:

builder.registerTypeAdapter(Date::class.java, JsonDeserializer<Date> { 
    json, typeOfT, context ->
    if (json.getAsJsonPrimitive().isNumber())
        Date(json.asJsonPrimitive.asLong * 1000) else
        null
})
Run Code Online (Sandbox Code Playgroud)

首先,Kotlin支持将lambdas SAM转换为Java接口,但语法与Java不同.然后,lambda中的返回与Java中的返回具有不同的含义,并且应该用隐式返回或带标记的返回替换.