用具有不同名称的构造函数参数覆盖接口属性

我有这个代码: class AnyUsernamePersistentNodePath(override val value: String) : AnyPersistenceNodePath { override val key = “username” } 和 interface AnyPersistenceNodePath { val key: String val value: String } 到现在为止还挺好。 现在我想在构造函数中的参数value被命名为username ,而不是value 。 但是,显然,保持覆盖接口的属性value 。 Kotlin可能吗? 我知道我可以这样做: class AnyUsernamePersistentNodePath(val username: String) : AnyPersistenceNodePath { override val key = “username” override val value = username } 但我想避免它。

有没有办法绕过Java无法将generics参数转换为非generics?

在C ++中,我可以像这样编写代码: class Shader { … void setUniform(GLuint handle, int value); void setUniform(GLuint handle, float value); void setUniform(GLuint handle, const std::vector &value); … }; class UniformValueBase { … GLuint handle; Shader &shader; virtual void apply() = 0; }; template class UniformValue: public UniformValueBase { … T value; virtual void apply() override { shader.setUniform(handle, value); }; […]

Swift – 从闭包中退出外层函数

在Kotlin中,你可以从闭包的外层函数返回。 fun main(args: Array) { val letters = listOf(“A”, “B”, “C”) fun lookForLetter(letter: String, letters: List){ letters.forEach { l -> if (l == letter) { println(“Found”) return } println(l) } println(“Completed”) } lookForLetter(“A”, letters = letters) } 输出: 发现 在Swift中,返回结束的执行 var letters = [“A”, “B”, “C”] func lookForLetter(letter: String, letters: [String]) { letters.forEach { (l) […]

使用Anko访问活动的视图

我知道我可以使用Anko的id属性来识别视图: class MainActivityUI : AnkoComponent { override fun createView(ui: AnkoContext) = with(ui) { frameLayout { textView { id = R.id.text } } } } 然后使用find()函数(或使用Kotlin Android扩展)在Activity获取它: class MainActivity : AppCompatActivity() { private val textView by lazy { find(R.id.text) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) MainActivityUI().setContentView(this) textView.text = “Hello World” } } 但我觉得我失去了一些东西; README中唯一提到find函数或Kotlin Android扩展的地方在标题为支持现有代码的部分: […]

为什么我得到错误java.lang.IllegalStateException:实例未初始化?

我得到错误 java.lang.IllegalStateException:实例未初始化 你可以在https://www.dropbox.com/s/gxeok1fyttsl54u/MyMirror.zip?dl=0 在operator fun getValue(thisRef: Any?, property: KProperty)… ,似乎代码operator fun getValue(thisRef: Any?, property: KProperty)…会导致错误。 但代码是来自示例代码,我几乎不会改变,你可以在https://github.com/antoniolg/Kotlin-for-Android-Developers/blob/master/app/src/main/看到源代码。 的Java / COM / antonioleiva / weatherapp / UI / App.kt 和 https://github.com/antoniolg/Kotlin-for-Android-Developers/blob/master/app/src/main/java/com/antonioleiva/weatherapp/extensions/DelegatesExtensions.kt 为什么? java.lang.RuntimeException: Unable to start activity ComponentInfo{info.dodata.mirror/ui.UIMain}: java.lang.IllegalStateException: instance not initialized at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2107) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2132) at android.app.ActivityThread.access$700(ActivityThread.java:140) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4918) at […]

未解决的引用:jvmName

我正在试图在终端中建立一个带有gradle的kotlin文件。 我得到这个错误: Unresolved reference: jvmName 这里是代码行的副本: val outputContract = IOUContract::class.jvmName 语法似乎罚款。 如果有人能够指出这一点,将不胜感激

arrayListOf和hashMapOf:未解析的引用

我试图在我的本地机器上玩Kotlin HTML builder的例子 。 在 abstract class Tag(val name: String) : Element { val children = arrayListOf() val attributes = hashMapOf() IntelliJ的想法hashMapOf地讨论arrayListOf和hashMapOf 。 导入kotlin.collections ( import kotlin.collections.* ),其中arrayListOf被定义,没有帮助。 我怎样才能解决这些错误?

在beforeEachTest和afterEachTest之前不要运行方法kotlin spek android

我试图在Android上使用Spek框架编写一个测试。 但是我很困惑。 根据代码,演示者必须在beforeEachTest方法中初始化。 并且必须在afterEachTest之后的方法中清除条件。 但是当我运行这个测试时,它在mPresenter !!。setPass(PASSWORD,PASSWORD)行中失败了。 但是如果你取消它前面的两条线,那么测试就会成功。 可能是什么问题呢? 在此先感谢您的答案 object ResetPasswordPresenterTestKotlin : Spek({ include(RxSchedulersOverrideSpek) val PASSWORD = “123456aZ”; var mView = mock{} var mMockDataManager = mock{} var mToken = mock{} var mPresenter : ResetPasswordPresenter ?= null beforeEachTest { print(“beforeEachTest”) mPresenter = ResetPasswordPresenter(mMockDataManager) mPresenter!!.attachView(mView) } afterEachTest { print(“afterEachTest”) mPresenter!!.detachView() reset(mView) } describe(“Reset password is succesful”) { […]

创建或解析java和kotlin clas到gradle任务

我有一些写在Java上的配置类。 这个配置包含一些颜色字段。 我想在编译时读取这些字段,并根据这些字段生成style.xml。 这个配置文件位于src / main / java。 如何在执行自定义gradle任务期间创建实例这个类(config)或解析.java文件?

isInitialized – lateinit var的备份字段在此处不可访问

我试图检查一个lateinit属性是否已经初始化。 在Kotlin 1.2中,我们现在有了isInitialized方法。 当我在声明了lateinit属性的类中这样做的时候,它就起作用了。 但是,当我尝试从另一个class级调用这个时,我收到以下警告: 此处不能访问’lateinit var foo:Bar’的备份字段 我的模型类(比方说Person )是用Java编写的 另外两个类(比如说Test1和Test2 )是用Kotlin编写的 例: class Test1 { lateinit var person: Person fun method() { if (::person.isInitialized) { // This works } } } – class Test2 { lateinit var test1: Test1 fun method() { if (test1::person.isInitialized) { // Error } } } 有机会得到这个工作? 我目前的解决方法是在Test1中创建一个从person属性返回isInitialized的方法。 fun isPersonInitialized(): […]