标签: kotlin-extension

如何检查kotlin中的"instanceof"类?

在科特林类,我的方法参数作为对象(参见科特林文档这里)类型Ť.作为对象,当我调用方法时,我传递不同的类.在Java中,我们可以比较instanceof它所使用的类的对象的类.

所以我想在运行时检查并比较它是哪一类?

如何检查kotlin中的instanceof类?

kotlin kotlin-extension

63
推荐指数
6
解决办法
3万
查看次数

56
推荐指数
4
解决办法
3万
查看次数

意外覆盖:以下声明具有相同的JVM签名

我在Kotlin中遇到了这个错误:

class GitHubRepoAdapter(private val context: Context,
    private val values: List<GithubRepo>) : ArrayAdapter<GithubRepo>(context, R.layout.list_item,
    values) {
Run Code Online (Sandbox Code Playgroud)

私有val上下文:上下文

在日志中它说:

错误:(14,25)意外覆盖:以下声明具有相同的JVM签名(getContext()Landroid/content/Context;):fun():Context fun getContext():Context!

我无法看到导致问题的原因.

kotlin kotlin-extension kotlin-android-extensions

46
推荐指数
4
解决办法
2万
查看次数

如何在Kotlin中为Java类添加静态方法

是否可以在java.lang.Math类中添加新的静态方法Kotlin?通常,由于Kotlin Extensions,Kotlin可以做到这一点.

我已经尝试在我调用的文件中执行以下操作Extensions.kt:

fun Math.Companion.clamp(value:Double,minValue:Double,maxValue:Double):Double
{
    return Math.max(Math.min(value,maxValue),minValue)
}
Run Code Online (Sandbox Code Playgroud)

Math.Companion无法解决......

kotlin kotlin-extension

38
推荐指数
3
解决办法
3759
查看次数

如何使用toString扩展数据类

我创建了一个数据类

data class Something (
    val a : String,
    val b : Object,
    val c : String
)
Run Code Online (Sandbox Code Playgroud)

在我的程序中稍后我需要这个数据类的字符串表示我试图扩展toString方法.

override fun Something.toString() : String = a + b.result() + c
Run Code Online (Sandbox Code Playgroud)

这里的问题是,它不允许扩展(覆盖)toString功能,因为它不适用于顶级功能.

如何正确覆盖/扩展自定义数据类的toString方法?

kotlin kotlin-extension data-class

35
推荐指数
1
解决办法
1万
查看次数

如何组织Kotlin扩展方法

假设我有一些"MyClass"的扩展方法.我的问题是,组织/存储这些方法的最佳做法是什么?它们应该简单地放入"MyClassExtensions"Kotlin文件中吗?

我试图将这些方法封装在一个类中,但是在导入类之后我似乎无法弄清楚如何使用/访问扩展方法.

编辑:为了澄清,我没有要求帮助调用包含扩展方法的文件.我在询问存储/组织此类方法的最佳实践/方法.IE浏览器.它们应该简单地放入kotlin文件中,还是应该封装在一个类中.我来自Java背景,所以我习惯在课堂上存储东西.

kotlin kotlin-extension

32
推荐指数
1
解决办法
4550
查看次数

在使用Kotlin的方法中抛出异常

我正在尝试将此Java代码转换为Kotlin:

public class HeaderInterceptor implements Interceptor {
  @Override public Response intercept(Chain chain) throws IOException {
    return null;
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我实现这些方法时,我会得到类似的东西

class JsonHeadersInterceptor : Interceptor {
    override fun intercept(chain: Interceptor.Chain?): Response? {
        throw UnsupportedOperationException()
    }
}
Run Code Online (Sandbox Code Playgroud)

我发现有关在Kotlin中抛出异常的唯一信息就是这个.

删除问号的一部分,因为没有必要,为什么它不会IOException以同样的方式处理?处理这种情况的最佳方法是什么?

java kotlin kotlin-extension

32
推荐指数
2
解决办法
2万
查看次数

无法解析Android中的符号repeatOnLifecycle

我正在按照这篇文章收集 UI 中的流量。但我无法解析代码中的repeatOnLifeCycle API。不过,我添加了以下依赖项。

lifecycle:lifecycle-runtime-ktx:2.4.0-alpha03
Run Code Online (Sandbox Code Playgroud)

请帮忙在此输入图像描述

android kotlin-extension android-ktx androidx kotlin-flow

21
推荐指数
3
解决办法
9682
查看次数

Kotlin List尾部功能

我试图找到一个尾部功能,List<T>但我找不到任何.我最终这样做了.

fun <T> List<T>.tail() = this.takeLast(this.size -1)
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

kotlin kotlin-extension

20
推荐指数
1
解决办法
4679
查看次数

Kotlin扩展函数访问Java私有字段

我想在使用Kotlin 扩展功能时访问Java的私有字段.

假设我有一个JavaABC.ABC只有一个私人领域mPrivateField.我想在Kotlin中编写一个扩展函数,无论出于何种原因使用该字段.

public class ABC {
    private int mPrivateField;

}
Run Code Online (Sandbox Code Playgroud)

科特林功能是:

private fun ABC.testExtFunc() {
    val canIAccess = this.mPrivateField;
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Cannot access 'mPrivateField': It is private in 'ABC'

有什么办法解决这个限制?

kotlin kotlin-extension kotlin-interop

20
推荐指数
3
解决办法
9478
查看次数