在科特林类,我的方法参数作为对象(参见科特林文档这里)类型Ť.作为对象,当我调用方法时,我传递不同的类.在Java中,我们可以比较instanceof它所使用的类的对象的类.
所以我想在运行时检查并比较它是哪一类?
如何检查kotlin中的instanceof类?
如何循环的HashMap的Kotlin?
typealias HashMap<K, V> = HashMap<K, V> (source)
Run Code Online (Sandbox Code Playgroud) 我在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!
我无法看到导致问题的原因.
是否可以在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无法解决......
我创建了一个数据类
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方法?
假设我有一些"MyClass"的扩展方法.我的问题是,组织/存储这些方法的最佳做法是什么?它们应该简单地放入"MyClassExtensions"Kotlin文件中吗?
我试图将这些方法封装在一个类中,但是在导入类之后我似乎无法弄清楚如何使用/访问扩展方法.
编辑:为了澄清,我没有要求帮助调用包含扩展方法的文件.我在询问存储/组织此类方法的最佳实践/方法.IE浏览器.它们应该简单地放入kotlin文件中,还是应该封装在一个类中.我来自Java背景,所以我习惯在课堂上存储东西.
我正在尝试将此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以同样的方式处理?处理这种情况的最佳方法是什么?
我正在按照这篇文章收集 UI 中的流量。但我无法解析代码中的repeatOnLifeCycle API。不过,我添加了以下依赖项。
lifecycle:lifecycle-runtime-ktx:2.4.0-alpha03
Run Code Online (Sandbox Code Playgroud)
请帮忙
我试图找到一个尾部功能,List<T>但我找不到任何.我最终这样做了.
fun <T> List<T>.tail() = this.takeLast(this.size -1)
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
我想在使用Kotlin 扩展功能时访问Java的私有字段.
假设我有一个Java类ABC.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-extension ×10
kotlin ×9
android ×1
android-ktx ×1
androidx ×1
data-class ×1
java ×1
kotlin-flow ×1