在我的 Kotlin 项目中,我有一个 DefaultError 枚举
enum class DefaultError {
INTERNET_ERROR,
BLUETOOTH_ERROR,
TEMPERATURE_ERROR
}
Run Code Online (Sandbox Code Playgroud)
我想扩展它们,以便我有
enum class NfcAndDefaultError : DefaultError {
//DefaultError inherited plus
NFC_ERROR
}
Run Code Online (Sandbox Code Playgroud)
和另一个枚举
enum class KameraAndDefaultError : DefaultError {
//DefaultError inherited plus
CAM_ERROR
}
Run Code Online (Sandbox Code Playgroud)
我现在有
enum class NfcDefaultError {
INTERNET_ERROR,
BLUETOOTH_ERROR,
TEMPERATURE_ERROR,
NFC_ERROR
}
Run Code Online (Sandbox Code Playgroud)
和
enum class KameraAndDefaultError {
INTERNET_ERROR,
BLUETOOTH_ERROR,
TEMPERATURE_ERROR,,
CAM_ERROR
}
Run Code Online (Sandbox Code Playgroud)
我敢打赌 Kotlin 有很好的方法吗?
在我的Android应用中,我想Place向我的Intent 添加一个Bundle,其中包括如下所述的对象。由于可序列化很慢并且不建议使用,因此我更喜欢使用Parcelable。
Althoug我使用Kotlin 1.3.31,在打包某些数据类时遇到问题。例:
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class Place(val street: String, val postal: String, val city: String) : Parcelable
Run Code Online (Sandbox Code Playgroud)
和Android Studio抱怨:
类'Place'不是抽象的,并且没有实现抽象成员public abstract fun writeToParcel(p0:Parcel !, p1:Int):android.os.Parcelable中定义的单位
根据一些教程
而已!您不再需要编写任何包裹方法!
https://android.jlelse.eu/yet-another-awesome-kotlin-feature-parcelize-5439718ba220
而且我不想使用
androidExtensions {
experimental = true
}
Run Code Online (Sandbox Code Playgroud)
生产中的东西。
我在这里有什么选择?
android parcelable android-bundle kotlin-android-extensions kotlinx.serialisation
假设我有一个数据类:
data class SensorData(val name: String, val temp : Double)
Run Code Online (Sandbox Code Playgroud)
SensorData我通过 REST 服务或内部 setter 方法创建此对象,但它name始终已填充并且temp可能为空。
此外,我需要通过几个类来获取这个 SensorData 对象,这就是我想到使用singleton.
显然我需要此处描述的object关键字,但是如何组合?data class object
我的 Kotlin 项目中有数据类,用于 JSON Rest 响应。例如:
data class WeatherResponse(val city: String, val temperature: Double, val humidity: Double)
Run Code Online (Sandbox Code Playgroud)
为了满足代码覆盖限制,我想为上述数据类编写一些测试。
哪些单元测试对 Kotlin 数据类有意义?
我想创建一个 WeatherResponse 对象和一个相应的 JSON 字符串(来自服务器的响应),将该字符串解析为 WeatherResponse 对象并进行比较?
当我使用 Retrofit 时,我可以轻松创建日志拦截器来查看 logcat 上带有正文和标头的调用:
val loggingInterceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
val httpClient = OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
Run Code Online (Sandbox Code Playgroud)
进而
val retrofit = retrofit2.Retrofit.Builder()
.client(httpClient.build())
Run Code Online (Sandbox Code Playgroud)
现在,我们切换到 Ktor,我不知道我不知道如何
addInterceptor()?install(CallLogging)][2] 没有任何反应..有什么建议或例子吗?
[2] 来源:
fun Application.main() {
install(CallLogging){
level = Level.TRACE
}
}
Run Code Online (Sandbox Code Playgroud) 现在,我将 Android 项目提交到 github,并且该本地 jar 文件的先前设置似乎丢失了。
\n\n每当同事签出该项目时,他们都没有其他 jar 文件的路径。
\n\n问题:
\n\nlibs我的应用程序模块中的文件夹。与1相比有什么优点和缺点?我有一个响应对象:
data class ResponseObject(
val notCamelcase: String,
val param2: String,
val param3: String
)
Run Code Online (Sandbox Code Playgroud)
notCamelCase请注意,响应 JSON 正文中的第一个参数不是驼峰式(例如)。
此外,我使用 FUEL 库触发 REST 调用:
Fuel.get(someParam)
.responseObject(moshiDeserializerOf(ResponseObject::class.java)) { _, response, result ->
try {
if (response.statusCode == HttpURLConnection.HTTP_OK) {
val responseObject = result.component1()
}
Run Code Online (Sandbox Code Playgroud)
以下是我的进口:
import com.github.kittinunf.fuel.Fuel
import com.github.kittinunf.fuel.core.FuelError
import com.github.kittinunf.fuel.core.FuelManager
import com.github.kittinunf.fuel.core.HttpException
import com.github.kittinunf.fuel.moshi.moshiDeserializerOf
Run Code Online (Sandbox Code Playgroud)
为了在下面的代码中使用驼峰命名法,我修改了 ResponseObject,如下所示:
data class ResponseObject(
@Json(name="notCamelcase")
val notCamelCase: String,
val param2: String,
val param3: String
)
Run Code Online (Sandbox Code Playgroud)
在本例中,notCamelCase为空。@Json 是否只能与 com.github.kittinunf.fuel.moshi.moshiDeserializerOf 一起使用?怎么了?
kotlin ×5
data-class ×2
android ×1
enums ×1
gradle ×1
junit ×1
kotlin-fuel ×1
ktor ×1
logging ×1
moshi ×1
parcelable ×1
singleton ×1
testing ×1
unit-testing ×1