因此,我想使用 Kotlin 为我的Android Studio项目实现一个简单的数据库处理程序类。当我注视着我的“偶像kotlin”开发伙伴时,我几乎不知道,这个时髦的选择会导致我冗长的谴责。
我决定首先使用SQLiteOpenHelper
类将code Google suggests复制粘贴到数据库助手中。
自然地,我开始遇到这个不合理的错误
3种不同方法中的每个右括号 }
,其中包含看起来完全正确的语法。
当然,我花了整整一天的时间检查每一个令人讨厌的Gradle构建属性,似乎只在那里增加了发生问题的机会,就好像这是Hell精心设计的Developer-Limbo构建系统一样。但是,每次检查都无济于事,因为我没有构建错误,并且“期望成员”错误不断出现。
但是,我决定不退出,甚至尝试更改实现以使用对Kotlin更友好的anko.db
路由,下面是完整代码。
package com.example.john.myapplication
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import org.jetbrains.anko.db.*
class DBHandler(context: Context) : ManagedSQLiteOpenHelper(context, "POIEncounters", null, 1) {
override fun onCreate(db: SQLiteDatabase?) {
db?.createTable("Encounter", true, "id" to INTEGER + PRIMARY_KEY + UNIQUE, "Name" to TEXT)
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
db?.dropTable("Encounter", true)
}
override fun onDowngrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
onUpgrade(db, oldVersion, newVersion)
}
}
在开发者Limbo中,“神圣秩序”规定,根本没有没有变化。每次单击Build
时,语法检查器的不可靠保证都会使我迷惑,因为编译器拒绝了我的救助。更令人惊讶的是。即使我注释掉了被覆盖方法的整个正文,该错误仍然存在 。
在这一点上,我非常绝望,以至于我跌到了最低点:拒绝我的自我并寻求帮助。
答案 0 :(得分:1)
对于那些不够勇敢地见证该过程的人,请在最后 TLDR 。
答案是由我自己决定的,经过了3个无休止的历时(请参阅:天),这是在无法建立的地狱维度中完成的,并于凌晨3点与一瓶格兰菲迪威士忌唯一的公司一起加入。我妖怪的键盘敲击声听起来很黑暗。
当我陷入疯狂时,easy-to-miss spelling errors,invalid constructor usage的常见嫌疑人一遍又一遍地被丢弃,现在可以肯定的是,即使有人在哪里复制我的确切代码,他们甚至可能都不会这个错误。
我什至尝试降低Kotlin本身的等级,以期错觉地希望编译器中出现一个错误,从而导致对“期望声明” ...
在上一次疯狂的尝试中,我什至尝试在 Intellij IDEA ...
经过一个多小时的折磨,使新项目的生成文件和其他可怕的属性对齐,导致小问题... 他们做到了。
我要放弃了,当我在Intellij的语法检查器上发现这个陌生而陌生的标志时:
Found byte-order-mark in the middle of a file <...>
SON。的。 A. BENCH。
现在,在我旅途中这令人难以置信的痛苦中,就像许多其他开发人员生活在幸福的天堂般的“键入代码以您的阅读方式进行解析” 一样, 没有分叉的想法 BOM 是什么。
然而,天体的想法甚至给了我们关于维基百科链接的被禁止的,黑暗的知识,我愚蠢地天真地跟随着它,看到了一个疯狂的,令人好奇的宇宙碎片,人类本来不会注视... < br />
什么钱。
我的手指在发抖,开始高潮。当我沉浸在最后一次非理性的希望的虚幻疯狂之中时,我听到自己在发出嘶哑的声音……
我删除了3种方法。吹扫他们所有的邪恶,杀真菌的狂热,凝视空荡荡的阶级,摆脱无形的,令人恶心的感染。
Build. *click* Success.
我手动改写了每种方法,而没有复制粘贴或触摸任何被魔鬼感染的卑鄙的文字,同时听着邪恶的,世俗的“ Dethklok Awaken”电话。就是这样。有效。我自由了,一只手爬上极乐世界,威士忌,眼泪落在火焰下面。
然而,空虚而失望。因为狡猾的阴影不是有形的敌人,而是短暂的力量,笼罩在自我之内...
有了这个答案,我希望没有人要面对与我相同的错误。至少没有做好准备。
TLDR :引起错误的原因是BOM个字符。 Intellij澄清了原因,而Android Studio则没有。无需删除任何内容即可手动删除并重新编写有问题的部分,并且可以正常工作。
结尾 :每天我们都远离ASCII的视线。