为什么我需要用一个返回常量的自定义getter初始化var
var greeting: String // Property must be initialized
get() = "hello"
当我将问候语设置为只读(val)时,我不需要初始化。当您使用不使用字段标识符访问其值的自定义getter创建val时,不会生成支持字段
val greeting: String
get() = "hello"
如果您这样做,则会生成支持字段,需要对其进行初始化
val greeting:
创建tableview时,列的默认行为是留下大量空白空间。有没有办法自动填充空间
这里描述了一种解决方案:
但这似乎有点麻烦 TornadFX附带了一个名为SmartResize的高级列大小调整策略。将其指定给如下表视图:
columnResizePolicy = SmartResize.POLICY
默认情况下,它会尝试根据数据执行一些有用的操作,并将剩余宽度分配给最后一列
您可以通过调用相应的configurator函数来配置每列的大小调整选项。例如,要告诉策略为给定列指定剩余宽度,请执行
我知道我的第一个第二个示例使用了一个lambda函数,并传入了一个参数。我试图理解为什么它与我的第二个样板示例不同,在这个示例中使用了双冒号而不是lambda。(仍然是一个科特林新手,试图让我的头绕着来自python背景的双冒号)
VS
::Issuer准确地表示什么?假设存在一个类Issuer,::Issuer将被分配给它的构造函数。将解析并使用具有适当数量参数(本例中为一个)的构造函数,这相当于lambda{Issuer(it)}
如果没有这样的类,则将使用名为Issuer的函数,如果它存在
我在科特林和TornadoFX图书馆一起工作。假设您有一个工具栏,其中显示了对当前视图有用的工具。我们有一个主控制器,它有一个subcroller属性,它是工具栏旁边某个视图的控制器。因此,如果我们的分包器发生更改,视图应该更新。此外,如果子滚轴的任何属性(如selectedTool、tools)发生更改,则工具栏应相应更新。工具栏暂时不会更新
class ToolBar : View("Tool bar") {
private val controller: MainControlle
标签: Kotlin
kotlin-android-extensionskotlin-extension
我注意到,我们可以在Kotlin中创建没有花括号的类,如下所示
//Example classFile.kt
class Empty
class SecondEmpty
fun firstMethod() {
}
我的问题是,为什么我们需要这样的功能?在什么情况下我们可以使用这个
在上面的示例中,我编写了一个名为firstMethod()的方法,如何从其他对象调用该方法?中已经讨论过空类
关于您的firstMethod:在Kotlin中,我们有所谓的顶级函数。可以在没有封闭类的任何文件中
我无法将JSON数组转换为GroupModel数组。下面是我使用的JSON:
[{
"description":"My expense to others",
"items":["aaa","bbb"],
"name":"My Expense"
},
{
"description":"My expense to others","
items":["aaa","bbb"],
"name":"My Expense"
}]
而GroupModel类是:
class G
我有一个sqlite表,它有一个名为direction的列的整数值。它将基于枚举常量存储Integer属性
i、 e将在表格中插入40:
kotlin_version = '1.2.30'
我用kotlin编写了一个enum类,并指定了属性常量
saveDirection(Direction.Right.code)
我想知道我是否可以对密封类做同样的事情
enum class Direction(val code: Int) {
UP(10),
DOWN(2
我在Android开发中使用Kotlin,我想用两个泛型创建类,其中一个V必须是View的子类,类还应该实现一些接口MyInterface
怎么做?我试过这样的东西
类测试(val-value1:String,val-map:map),其中V:View,MyInterface
或
类测试(val-value1:String,val-map:map),其中V:View:MyInterface
但是我不知道正确的语法是什么?类测试(val-string:string,val-map:map):MyI
我在查看时注意到,Kotlin语言本身主要是用Kotlin编写的:
我只是想知道,一种语言怎么可能主要是用自己的语言写的?在使用所创建的语言之前,是否需要编写编译器(使用其他语言)?以源语言编写编译器的过程称为
事实上,在早期阶段,它涉及到用另一种(通常是较低级别)编程语言编写编译器,支持为编译器源语言设计的功能的合理子集
然后,使用第一步中实现的功能子集,可以用编译器编译的语言重写编译器的代码。它为您提供了用同一种语言编写的语言子集的编译器
之后,可以添加新特性(起初不在代码中使用它们),并每
标签: Kotlin
kotlin-extensionkotlinx.coroutines
我想将我的rxJava代码转换为Kotlin协同程序
下面是进行api和db调用并将数据返回到UI的代码。假设DB的响应速度恰好比api快。在这种情况下,api响应将继续,直到它接收到要与db同步的数据为止,尽管它可以更早地完成UI更新
我该怎么做
class MoviesRepository @Inject constructor(val apiInterface: ApiInterface,
val Movies
标签: Kotlin
android-testingmockk
我似乎无法在android测试中模拟私有函数。我还使用全开放插件进行pre-P测试。在非android测试中,它运行没有问题。我想它也应该在android上运行,因为它在MockK android上有标记。这是没有实现,还是我遗漏了一些明显的东西
androidTestImplementation "io.mockk:mockk-android:1.8.7"
@OpenForTesting
class A {
fun publicFun() = privateFun()
pri
我在S.O.的帖子中看到以下评论,我很感兴趣:
为什么不使用if进行空检查a?.let{}?:run{}仅在极少数情况下适用,否则它就不是惯用用法——沃丹5月15日16日7:29
为什么这种结构“仅适用于极少数情况”?
Kotlin的首席工程师说
run允许您在elvis运算符的右侧使用多个语句
虽然我承认这并不是真的认可它是惯用的。这两篇文章似乎都来自备受尊敬的S.O.Kotlin撰稿人。
启发原始评论的帖子提到,如果a是可变的,则表达式的let部分很重要。在这种情况下,您需要a?.let{}
在添加房间数据库时,建议使用Singleton设计模式
注意:在实例化AppDatabase对象时,应该遵循singleton设计模式,因为每个RoomDatabase实例都相当昂贵,并且很少需要访问多个实例
所以,在中添加Room数据库,下面是用Java编写的Google示例,如下所示
private var INSTANCE: AppDatabase? = null
fun getInstance(context: Context): AppDatabase? {
if (INST
在Typescript中,我可以将一组有限的字符串声明为类型:
declare type Status = 'GOOD' | 'MEDIUM' | 'POOR';
然后,我可以使用此类型来限制分配给status属性的字符串:
interface Foo {
status: Status;
}
在Kotlin中如何执行此操作?在Kotlin中,您将为此创建一个枚举
enum class Status {
GOOD, MEDIUM, POOR
}
在这种基本情况下,您可以使用枚举常
标签: Kotlin
gradle-kotlin-dslkotlin-dsl
在gradle的kotlin构建脚本中,我们不需要在构建脚本中显式导入类或函数,如插件、存储库或依赖项
plugins {
val kotlinVersion = "1.3.10"
val springBootVersion = "2.1.0.RELEASE"
val detektVersion = "1.0.0-RC10"
id("org.springframework.boot") version springBootVersion
id("org.
有人知道记录Ktor路线的正确方法是什么,目的是在KDoc上显示它吗?
例如:
如果可能的话,我该怎么做?我应该在里面放哪种类型的信息?如何在其他方面实现Ktor兼容性?(我有另一个自己制作的路由器用于其他用途)Dokka不支持Ktor路由,我不知道有任何计划添加此类支持,因此无法在生成的文档中包含有关路由的信息
route(DogoBot.data.API.ROUTE){
route("token"){
route("add"){
get("fr
我是Kotlin的新手,正在研究一个简单的方法,该方法可以对列表进行排序并将其连接到字符串
private fun generateKey(params: Array<Any>): String {
val genericCollection = if (params.isNotEmpty() && params[0] is Collection<*>) params[0] as Collection<*>
我想在TornadoFX中实现MVP,而不使用它的注入(因为它损害了可读性,需要依赖一些我无法控制的东西)
我对良好的MVP实施的想法如下:
interface ModelEventHandler {...}
interface ViewEventHandler {...}
class Model(val eventHandlers: List<ModelEventHandler> = listOf<ModelEventHandler>())
class View(val
我的项目中有一个BaseActivity,它的工作之一是实例化Acvities的ViewModels。事情是这样的:
abstract class BaseActivity<VM : ViewModel>(clazz: KClass<VM>) :
AppCompatActivity() {
@Inject
protected lateinit var viewModelFactory: ViewModelProvider.Factory
我是Kotlin的新手,我正在尝试重构Kotlin中的一些代码
我有一段代码,我在多个地方调用它,我想调用一个函数
Mockito.`when`(mockedSkillMaxCountRepository.getSkillMaxCount()).thenReturn(
SkillMaxCount(count = 65),
SkillMaxCount(count = 65)
)
我想这样做,参数的数量可以是任意数量
mockSkillMaxCount(SkillMaxCoun
标签: Kotlin
amazon-sqskotlin-coroutines
我有一个阻塞的sqs侦听器,它从sqs获取消息,进行一些处理(可能是消息验证或充实),将处理过的消息存储在DB中,清理来自sqs的消息。我计划使用Kotlin协程以非阻塞方式编写整个sqs侦听器。我的问题是,如何在旧方法和新的基于协同路由的方法之间衡量性能(吞吐量、cpu使用率、线程使用率)
我的协同程序方法的源代码:
性能测试的目的是验证我基于协同程序的方法是否能提供相当高的性能(可能是cpu使用率较低)与传统的基于执行器的方法相比。您可以使用Jetpack基准库的部分来轻松编写测试来衡量代码
我正在Kotlin中构建一个应用程序,用于管理服务提供商和客户(例如理发师)之间的预约。我想从客户端的应用程序中读取服务提供商在其谷歌日历中的事件。i、 e.客户想要预约,在他选择了他想要的后,我想给他一份当天可用的预约列表,我需要获得当天/周/月的服务项目活动。
我怎样才能用Kotlin做到这一点呢?不感谢谷歌的文档化,我成功地解决了这个问题
val user_email = "no_body@gmail.com"
const val READ_EVENTS_SCOPE = "https://
我似乎找不到如何在Ktor中构建新创建的资源的URL
post("/resources") {
val newResRequest = call.receive<Resource>()
val newResLocation = service.create(newResRequest)
.id
.let { constructAUrlWith(it) }
with(call) {
response.header("Location", newR
我是Kotlin的新手,我正试图弄清楚如果变量为空,该如何做。这就是我想做的
private var loggedInUser: User? = null
fun createActivity(activity: Activity) {
loggedInUser?.activities?.put(activity.id, activity)
//set loggedInUser.activities = hashMapOf() if null
}
这是用户类
data cla
这是一个关于回调函数的一般性问题,在Kotlin Native中定义,由C函数调用
为了便于讨论,假设我正在尝试递归地遍历文件系统中的目录,在Kotlin Native中使用。
(我知道还有其他方法可以做到这一点,使用其他C函数,但这不是问题的核心。)
nftw()将函数作为回调函数:
val directory = "//some/directory"
val callback = kotlinx.cinterop.staticCFunction {
file: CPo
我有一个函数,它接受两种可能类型的参数元数据:Metadata1或Metadata2。我正在尝试编写一个实用函数,它可以同时用于这两个方面,因为有大量的代码重用。它们都有一个DataPoint对象列表,每个对象都有name()方法
我认为在我的代码中,Kotlin会使用类型推断来知道dataPoints只能是两种都有DataPoint.name()方法的类型之一,但我得到了“未解析引用:name”。如何使此函数足够通用,以应用于Metadata1和Metadata2
var dataPoints
标签: Kotlin
jacksondeserialization
我正在使用一个请求,它的参数名是uuu parameter10/02/2020,日期被发送到请求中。
有没有一种方法可以使用属性注释来反序列化它?另外,如何使用自定义序列化程序实现这一点?
Json示例:
{"yearly_return10/02/2020" : "2.87", "__monthlyreturn_current10/02/2020": "-0.0853703899653",}
你可以试试@JsonA
我遵循了为泛型类创建自定义序列化的步骤。但我仍然有很多错误:
SerializationException:类“ApiResponse”的序列化程序不可用
建立将类标记为@Serializable或提供序列化程序
明确地说
我的ApiResponse类如下所示:
@Serializable(with = ApiResponseSerializer::class)
class ApiResponse<T>(
@SerialName("data")
v
写的是我们可以用label中断forEach
我在我的android应用程序中尝试了它,但失败了,接下来我在官方页面上用演示代码进行了尝试,但也没有成功
有人能解释一下为什么这个代码不起作用以及如何修复它吗
fun foo() {
listOf(1, 2, 3, 4, 5).forEach lit@{
if (it == 3) return@lit // local return to the caller of the lambda, i.e. the forEach loop
标签: Kotlin
android-linearlayout
我在让线性布局的高度自动增加以适应我的内容时遇到问题。正如您在下面的屏幕截图中所看到的,日期文本被截断。请问你有什么办法解决这个问题吗?多谢各位
为什么不使用“包装内容”?嗯,我以为0dp是一样的,但你是对的,谢谢!
<LinearLayout
android:id="@+id/boxes_view_case_details"
android:layout_width="match_parent"
android:layou
如果我有一个可空的布尔b,我可以在Java中进行以下比较:
Boolean b = ...;
if (b != null && b) {
/* Do something */
} else {
/* Do something else */
}
在Kotlin中,我可以通过使用操作员:
val b: Boolean? = ...
if (b != null && b!!) {
/* Do something */
} else {
/*
标签: Kotlin
nullablegetternon-nullable
num在设置时应为空,但它返回的值应始终不为空(具有默认值)
即使返回值始终为非null(这对我来说很有意义),以下内容也不会编译,因为类型不是推断的,而是从支持字段获取的:
val a: Int = Test().num
类型不匹配:推断的类型为Int?但是Int是意料之中的
问题是如何将该getter的返回类型更改为不可为空?如果我这样做,编译器会说:
Getter返回类型必须等于属性的类型,即。
“内特?”
我知道我可以用另一个属性numNotNullable(没有支持字段)来解决它
从kotlinc-Xbuild file参数引用的文件内容的XML格式文档在哪里
XML看起来像:
<modules>
<module name="module-name" type="java-production" outputDir="/Users/user/code/project/build/classes/kotlin/main">
<sources path="/Users/user/code/project/src/main/
在Kotlin中,如果我有一个调用构造函数(或另一个函数)的函数,有没有办法将默认参数的确定委托给底层构造函数/函数
此语法无效,但希望这能说明我的意图:
fun buildMyObject(stringParam: String?, intParam: Int?): MyClass {
return MyClass(stringParam, intParam)
}
class MyClass(val stringParam: String = "Hello world!", val
类别:
这可能吗?是的,只需使用标准库函数,该函数在对象上执行并返回该对象:
val axisDto = CameraBrandDto()
axisDto.name = "AXIS"
val axisDto = CameraBrandDto()
axisDto.name = "AXIS"
val axisDto = CameraBrandDto().apply { name = "AXIS" }
我正在使用HOCON来配置日志消息,并且正在寻找一种动态替换占位符值的方法
我知道当占位符环境变量不存在时,${?PLACEHOLDER}将读取一个环境变量并返回一个空字符串
例子
这是我想到的一个例子:
(我正在使用config4k加载HOCON)
数据类日志消息(val消息:字符串,val代码:字符串)
fun getMessage(键:String,占位符值:Array=arrayOf()):LogMessage{
val config=ConfigFactory.parseString(
此代码将生成一个警告
条件'a.at=“null”始终为“true”
但事实上,条件‘a’在=“null”始终为false。首先需要在处初始化变量,然后在b:
class A
{
val b:B
val at:String
init
{
b=B(this)
at="A's text"
}
}
class B(a:A)
{
val bt:String
init
{
bt= if(a.a
标签: Kotlin
schedulercoroutinekotlinx.coroutines
我目前正在尝试构建一个作业调度程序,如下所示。我的目标是能够尽可能精确地安排任意函数(此处为(Long)->Unit))的启动时间(理想情况下为亚毫秒)
microssinceepoch()中now的实现是错误的。毫秒值应用两次
为了说明这一点,下面是Java代码,用于在MicrosSinceepoch()中打印now中使用的值。:
输出
2019-02-02T00:16:58.999999Z
1549066618999 toEpochMilli()
1549066618999000 toEpo
标签: Kotlin
android-recyclerviewretrofit2rx-java2
Gson可转换数据未在Recyclerview中使用Refught2和rxjava2进行设置,然后通过其给定错误进行订阅:
UninitializedPropertyAccessException: lateinit property data has not been initialized
通过rxjava2和rxjava2解析JSON数据。在解析GSON数据转换GSON时,rxjava2订阅数据,然后在recyclerview中给出lateinit属性错误及其未设置
MainActivi
我有一个如下的函数
fun process(string: String?): Int {
if (string != null) {
return string.filter { it.equals("a") }.length
}
return 0
}
它表明,It.equals(“a”)可以通过消息进行改进
调用可替换的二进制运算符
因此,我只需使用Alt Enter来相应地更改它并获得
fun
我在Kotlin项目中有一个简单的继承树,其中基类由数据类扩展。如果不重写基类中的参数,则无法声明数据类的构造
我注意到,如果我不在数据类中进行扩展,这将起作用:
open class Base(
val first: String,
val second: String
)
class Child(
first: String,
second: String,
val third: List<String>
) : Base(first,
我需要在我的应用程序中设置费率选项。
我只想让用户能够在Google Play上对我的应用程序进行评分。我找到了解决方案(Kotlin):
注意:此代码在模拟器上不起作用,请使用真实设备。我找到了解决方案(Kotlin):
注意:此代码在模拟器上不起作用,请使用真实设备。可能重复是的,但此解决方案在Java上,但我需要KotlinCopy上的解决方案/将Java代码粘贴到Kotlin文件,Android Studio将乐于立即转换代码。是的,Android Studio很酷!)“Intellij
我正在做一个回收视图。当使用init块时,我遇到了问题。
我希望代码按顺序执行。但是它坏了
一些代码:
inner class TodoListFragmentRecyclerViewAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
val doListDTOs = ArrayList<DoListDTO>()
init {
Log.e("1"
标签: Kotlin
annotationscycledagger
上下文
我有一个使用Dagger(2.27版)用Kotlin编写的Android应用程序。在我的测试中,我创建了一些依赖项的真实实例,其中一些依赖项@InjectaCoroutineDispatcher
@Singleton
@Component(modules = [RepositoryTestModule::class])
interface TestComponent {
fun inject(...)
@Component.Factory
interface F
我想要这样的东西:
class ItemBase(private val TOOLTIP: String) : Item(Settings().group(EnderIO.ENDERIO)) {
fun check() {
if (TOOLTIP.isNotBlank()) {
override fun appendTooltip(itemStack: ItemStack?, world: World?, tooltip: MutableList&
我正在使用Camera2 API,我正在尝试检索最大的可用图像大小。我想使用Collections.max。我曾尝试用Java编写此代码,效果很好
爪哇交易所-
CameraCharacteristics characteristics
= manager.getCameraCharacteristics(cameraId);
// We don't use a front facing camera in this sample
如何限制类型而不是使用map的任何in值
val mixType = Map<String, String or Boolean or Int>() // something I like
val anyType = Map<String, Any>() // the scope is too large
val mixType=Map()//我喜欢的东西
val anyType=Map()//作用域太大
我建议在此处使用:
你想解决什么问题?出于某种安全原因,我将
我面临以下问题:我有一个对象列表。让它成为类测试的对象:
data class Test(
var status: String, // Can be EXPIRED, WAIT
var amount: Float
)
数组被排序后,在开始和之后都有状态为WAIT的对象,状态为EXPIRED。我需要计算状态为过期的所有元素(如果存在)的总和,并将类型为等待的第一个对象(如果存在)的总和相加。现在我有以下代码:
private fun getRestructuringAmoun
我有下面的地图
val maptottransform=mapOf(1到4,2到5,4到4,6到3,9到3)
我想把它转换成地图
val transformedMap=mapOf(3到listOf(6,9),4到listOf(1,4),5到listOf(2))
我的尝试如下:
val trunt=maptottransform.map{it.value to it.key}.groupBy{it.first}
这就给出了{4=[(4,1),(4,4)],5=[(5,2)],3=[(3,6)
标签: Kotlin
kotlin-coroutine-channelkotlin-1.5
迁移到Kotlin 1.5时,我偶然发现了该频道新的trySendBlocking()方法的一个问题
因此,我们有一个参与者返回一个SendChannel,命令作为我们自己的数据类
在Kotlin 1.4中向参与者发送命令时,我们通常使用其通道,如下所示:
channel.sendBlocking(command)
现在,建议在Kotlin 1.5中使用以下内容:
channel.trySendBlocking(command)
很好,但是我想知道为什么不使用trySend()而不是tryS
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 207 页