尝试在IntelliJ IDEA中打开Corda演示,并在尝试导入Gradle设置时收到此错误 错误:无法findorg.jetbrains.kotlin:kotlin-gradle-plugins:1.1.4。 在以下位置搜索:file:/ C:/Users/Default/.m2/repository/org/jetbrains/kotlin/kotlin-gradle-plugins/1.1.4/kotlin-gradle-plugins-1.1.4.pom file: /C:/Users/Default/.m2/repository/org/jetbrains/kotlin/kotlin-gradle-plugins/1.1.4/kotlin-gradle-plugins-1.1.4.jar https://repo1.maven.org/ maven2 / org / jetbrains / kotlin / kotlin-gradle-plugins / 1.1.4 / kotlin-gradle-plugins-1.1.4.pom https://repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-gradle -plugins / 1.1.4 / kotlin-gradle-plugins-1.1.4.jar https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugins/1.1.4/kotlin-gradle-plugins- 1.1.4.pom https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugins/1.1.4/kotlin-gradle-plugins-1.1.4.jar需求方:项目: 我找不到任何文件来建议如何解决这个问题,任何想法?
我想为一个var属性做一个懒惰的初始化。 由于by lazy只限于val属性,我必须写这样的东西: private var currentContextProvider: ContextProvider? = null get() { if (field == null) { field = DefaultContextProvider() } return field } 现在我必须处理那些毫无意义的可空currentContextProvider?.getContext()知的调用: currentContextProvider?.getContext()或者currentContextProvider!!.getContext() 难道我做错了什么?
我试图扩展在我的课kotlin android.widget.FrameLayout。 问题是,因为我升级到kotlin 1.2.21我无法编译,因为FrameLayout的最长(4参数)构造函数需要minSdk 21,但我的库也需要工作在api级别19。 我已经放弃了使用@JvmOverloads(它似乎是越野车和即时运行崩溃),所以我试图写“长”的代码。 就像是: 我尝试的第一种方法: class PullDownAnimationLayout : FrameLayout, Animator.AnimatorListener, PullDownAnimation { @RequiresApi(Build.VERSION_CODES.LOLLIPOP) constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) constructor(context: Context) : this(context, null) override val MAX_PULL_HEIGHT_PX: […]
错误讯息如下: “types不匹配kotlin.collections.ArrayList found() – > kotlin.collections.ArrayList” 同时试图创建一个对象。 public class PhotoController : Typed2EpoxyController<ArrayList, Boolean>() { override fun buildModels(activityData: ArrayList?, data2: Boolean?) { TODO(“not implemented”) //To change body of created functions use File | Settings | File Templates. activityData!!.forEach { val activityDataArrayList:ArrayList for (i in 1..5) { activityDataArrayList.add(ActivityData(“activityName” + i,”activityStatus” + i,”70″,”25″,”Open x|Close y|For Review z”)) } […]
我在Kotlin函数中遇到麻烦,应该返回Unit,但是由于使用了另一个返回布尔值的函数,会出现types不匹配的情况。 这是一个人为的例子: fun printAndReturnTrue(bar: Int): Boolean { println(bar) return true } fun foo(bar: Int): Unit = when(bar) { 0 -> println(“0”) else -> printAndReturnTrue(bar) } 在这里,我其实并不关心printAndReturnTrue返回一个布尔值的事实。 我只是想让富美执行副作用的操作。 但编译器警告types不匹配:我的else应该返回一个Unit值。 有没有一种很好的方法将值转换为Unit ? 我看到的最简单的解决方案是: fun foo(bar: Int): Unit = when(bar) { 0 -> println(“0”) else -> { printAndReturnTrue(bar) Unit } } 要么: fun foo(bar: Int): Unit = when(bar) […]
我试图根据定义的范围来构造一个类的实例,而不使用显式参数。 这是从Python到Kotlin的一个端口的一部分,但主要想法是这样的: var d = MyClass() use_scope(contextAForScope) { var a = MyClass() use_scope(contextBForScope) { var b=MyClass() } } 在这个例子中, d构造函数使用默认上下文,构造函数使用contextAForScope而b构造函数使用contextBForScope (use_scope只是一个占位符) 。 像隐式的上下文? 当然,我可以使构造函数参数显式化,但这可能会在单个作用域中使用多次,我不想定义一个额外的variables。
apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-android-extensions’ android { compileSdkVersion 25 buildToolsVersion “26.0.0” defaultConfig { applicationId “//” minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName “1.0” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } } and project level buildscript { ext.kotlin_version = ‘1.1.2-4’ repositories { google() jcenter() } […]
我在Android项目中编码Kotlin。 我在for()循环中使用了一个when()语句。 在循环的每次迭代中需要执行的when()语句的下面有一些行,但是会跳过,并且控制流回到循环的下一个循环。 这是我所做的简化版本。 for (i : Int in 0..10) { val data = Data() when(i) { 0 -> data.att1 = “sample0” 1 -> data.att1 = “sample1” 2 -> data.att1 = “sample2” .. .. } dataArray.add(i, data) // LINE NOT EXECUTED } 我对Kotlin有点新鲜,所以我不确定这是否是Kotlin的正常行为。 先谢谢您的帮助。
这是官方文件说的。 但是当我做这样的事情: var human : Human? = null 并反编译成java代码,我发现它实际上是 @Nullable private Human human; 写这个没用 public var human : Human? = null 但是当我写这个: lateinit var human : Human 它这次成为公众 @NotNull public Human human; 当我使用Dagger2时,这是个大问题 在Dagger2中,注入的属性必须公开,但是如果我写var human : Human? = nullvariablesvar human : Human? = null var human : Human? = null它将无法建立。 所以,这是一个kotlin的错误? 或官方文件的错误?
我有一个空的属性(一个Java对象),知道如何将自己转换为一个字符串,如果这种表示不是空的,我想做一些事情。 在Java中,这看起来像: MyObject obj = … if (obj != null) { String representation = obj.toString(); if (!StringUtils.isBlank(representation)) { doSomethingWith(representation); } } 我试图find把这个转换成Kotlin的最习惯的方式,我有: with(obj?.toString()) { if (!isNullOrBlank()) { doSomethingWith(representation) } } 但是对于这样一个简单的操作,感觉还是太多了。 我有这样一种感觉,即let我,可以和我在一起when ,可以把它缩短到稍微短一些。 步骤是: 如果对象(A)不为空 如果对象(A)的字符串表示(B)不是空白的 (B) 我试过了: when(where?.toString()) { isNullOrBlank() -> builder.append(this) } 但(1)失败: Unresolved reference. None of the following candidates is applicable because […]