我需要传递Kotlin的Pair作为参数。
<argument android:name="data" app:argType="kotlin.Pair" />
e: CreateCodeFragmentDirections.kt: (16, 15): 2 type arguments expected for class Pair<out A, out B>
<argument android:name="data" app:argType="kotlin.Pair<String, String&
我有以下简单的Kotlin扩展函数:
// Get the views of ViewGroup
inline val ViewGroup.views: List<View>
get() = (0..childCount - 1).map { getChildAt(it) }
// Get the views of ViewGroup of given type
inline fun <reified T : View> ViewGroup.getViewsOfType() : List<T> {
return this.views.fil
我正在使用Kotlin对Android进行一些全局API解析器的实验(检查网络连接、调用API和通过一个源调用返回格式化数据)&在某个时候,我必须创建一个通用类型的object,如下所示,当在第一行(如Type parameters are not allowed for objects )发现编译错误时,我不得不创建一个泛型类型的Type parameters are not allowed for objects。
object RestApiParser<T> // ERROR(mark under T): Type parameters are not allowe
给定函数
fun <T> to5(x: T): Int = 5
是否可以将其赋值给像这样的变量(值) funVal?
val funVal: (T) -> Int = ::to5
不带
未解决的参考资料:t
错误?
换句话说,是否有可能以某种方式告诉Kotlin,T In funVal类型声明是一个类型参数?
例如:
val <T> funVal: (T) -> Int = ::to5
val funVal<T>: (T) -> Int = ::to5
val funVal: <T> (T) -> Int =
我希望创建一个类似于Kotlin的ifEmpty()的函数,它也将检查null:
ifNullOrEmpty{
//some code if null or empty
}
我该怎么做?
有人知道下面的代码是什么吗?
: R where C : CharSequence, C : R
Kotlin ifEmpty()函数的示例。
@SinceKotlin("1.3")
@kotlin.internal.InlineOnly
public inline fun <C, R> C.ifEmpty(defaultValue: () -> R): R where
如果我试图访问泛型类型T的javaClass,Kotlin编译器会抱怨T不是kotlin.Any的子类型
class Foo<T> (val t: T ){
val cls = t.javaClass // Error, T is not a subtype of kotlin.Any
}
如果将T定义为任何事物的子类型,那么一切正常。
class Bar<T:Any> (val t: T ){
val cls = t.javaClass // OK
}
( Q1)如果“T”类型不是“任何”的子类型,那么它可以是哪个类/类的子类型?
Q2)对于T的所有实
在我的代码中有一个场景,其中我希望一个类为两个不同类型实现接口,如下面的示例:
interface Speaker<T> {
fun talk(value: T)
}
class Multilinguist : Speaker<String>, Speaker<Float> {
override fun talk(value: String) {
println("greetings")
}
override fun talk(value: Float) {
// Do so
我有一个java类
public class CouchbaseContainer<SELF extends CouchbaseContainer<SELF>>
当我试图在kotlin中创建对象时
val couchbase = CouchbaseContainer()
Kotlin抛错了
类型推断失败:没有足够的信息在构造函数CouchbaseContainer!> ()中推断参数SELF。请特别说明一下
但是,我能够在Java中创建这个对象,如下所示:
CouchbaseContainer couchbase = new CouchbaseContai
我知道用Java编写静态泛型方法是可能的。
我试图在Kotlin实现我自己的解决方案,但失败了。
class Wrapper<T>
{
companion object <T> // error: Type parameters are not allowed for objects.
{
private var value: T? = null
// implement some methods
}
}
有没有办法在Kotlin中实现静态泛型方法?
我正在和Kotlin一起探索并积极使用仿制药。
Kotlin +泛型对我来说是一个很大的难题,所以与Java相比,也许您可以解释并帮助我理解它是如何工作的。
我有AbstracApiClient类(不是很抽象)
class AbstracApiClient {
open protected fun makeRequest(requestBuilder: AbstractRequestBuilder) {
// ...
}
}
AbstractRequestBuilder (不是很抽象):
open class AbstractRequestBuilder {
...
我正在尝试使用Json和Kotlin将Json字符串反序列化为OperationResult<String>类型的对象。
我需要像这样构造一个类型对象:
val mapper : ObjectMapper = ObjectMapper();
val type : JavaType = mapper.getTypeFactory()
.constructParametricType(*/ class of OperationResult */,,
/* class of String */);
val result : OperationRes
我有一个用Java和Koltin编写的项目(请原谅我对kotlin的新手理解)
我想序列化的类已经实现了Serializable接口。
错误消息:
Type mismatch: inferred type is EntityRelationship but Serializable! was expected
public class EntityRelationship implements Serializable {
@NonNull
private Relationship relationship;
@Builder.Default
private L
我的共享模块包含Repository类,它有两个函数,返回封装在扩展Flow的自定义类CFlow中的项列表。
我从和那里提取了和的代码
fun <T> Flow<T>.asCFlow(): CFlow<T> = CFlow(this)
class CFlow<T>(private val origin: Flow<T>) : Flow<T> by origin {
fun watch(block: (T) -> Unit): Closeable {
val job = Job()
我想检查函数是否具有A类型的参数,使用以下代码:
import kotlin.reflect.*
import javafx.event.ActionEvent
interface IA {}
class A {}
class B {
fun test(a: A, ia: IA, event: ActionEvent) {
println(a)
println(ia)
println(event)
}
}
fun main(args: Array<String>) {
for (function in
在Kotlin,我有一个数据类。
data class APIResponse<out T>(val status: String, val code: Int, val message: String, val data: T?)
我想声明另一个类,包括:
class APIError(message: String, response: APIResponse) : Exception(message) {}
但是Kotlin给出了错误:在com.mypackagename中定义的类com.mypackagename需要的一个类型参数
在Java中,我可以这样做:
class
kotlin中是否有一种方法可以创建泛型属性,而不需要声明类级别的泛型类型?像这样的东西:
interface Generic {
val t: T //I need this type only once, thats why I dont wanna pass in the class level
fun <E> gMethod(e: E) { //This works, so I'm wondering if there's something similiar to properties
}
}
在中有一段代码让我困惑
local iterator -- to be defined later
function allwords ()
local state = {line = io.read(), pos = 1}
return iterator, state
end
function iterator (state)
while state.line do -- repeat while there are lines
-- search for next word
local s, e = string.find(state.lin
我试过使用flattenLiveData(),但它怀疑kotlin.collections.ArrayList<LiveData<List<TabDefinition>>>,但我正在通过Collection<LiveData<List<TypeVariable(Source)>?>>
Type mismatch: inferred type is
kotlin.collections.ArrayList<LiveData<List<TabDefinition>>> /* =
java
在Kotlin文档中,它们展示了如何包含类型参数:
class Box<T>(t: T) {
var value = t
}
这是一个简单的例子。但我遇到了一个这样的:
abstract class SomeAdapter<T, WH: SomeViewHolder>(private val viewModel: SomeModel<T>?) {
}
我该怎么解释呢?我是否将此解释为:
SomeAdapter在实例化时接受两个参数--T和WH。构造函数接受一个viewModel。
我有一个应用模块,比方说“测试”。“测试”模块依赖于子模块B。两者都启用了数据绑定。在库模块B中,我使用数据库创建一个简单的活动,它的目的是实现可重用性,例如:我可以创建一个基本登录屏幕,并在以后的许多应用程序中使用它。下面是B包中的示例代码。
package com.test.packageb
open class MainActivity : AppCompatActivity() {
lateinit var binding : ActivityMainBinding
override fun onCreate(savedInstance
Kotlin允许您扩展泛型类的具体实例。例如,假设我有一个扩展函数为Foo<Int>.bar()和Foo<String>.bar()的Foo类
class Foo<T>(t: T) {
val a: String = "bar"
val b: Int = 111
}
fun Foo<Int>.bar() = a
fun Foo<String>.bar() = b
fun main(args: Array<String>) {
val stringBar: String = Foo(1).ba