kotlin在委托中只有一个继承的方法的未解决的参考

我有一个通过方法提供一些代表的科林类。 编译一切时,我得到错误

错误:(121,30)Kotlin:未解析的引用:stringSet

请注意,所有其他方法工作得很好,它编译每一个这种方法的发生

以下是提供代表的课程片段:

//Compiles and can be accessed protected fun int(default: Int? = null, jsonName: String? = null, jsonObject: JsonObject = configJson) = JsonProperty({it?.asInt}, jsonName, jsonObject, default.toStringOrNull()) //compiles, but can't be accessed in one class protected fun stringSet(jsonName: String? = null, jsonObject: JsonObject = configJson, default: Set<String>? = null): JsonProperty<MutableSet<String>> { return JsonProperty<MutableSet<String>>({ _json -> if(_json == null) return@JsonProperty null else { return@JsonProperty CustomMutableSet<String>({ _json.asJsonArray.map { it.asString }.toMutableSet() }, { if (!contains(it)) { val changed = !_json.asJsonArray.contains(it.toJsonPrimitive()) _json.asJsonArray.add(it) rewriteConfig() changed } else false }, { val changed = _json.asJsonArray.contains(it.toJsonPrimitive()) _json.asJsonArray.remove(it.toJsonPrimitive()) rewriteConfig() changed }).also { toReturn -> default?.toMutableSet()?.let { it.removeAll(toReturn) toReturn.addAll(it) } } } }, jsonName, jsonObject, "[]") } 

这个用例编译:

 abstract class ElementInfo<T: Element> : Config { val input: ElementCollection<T> constructor(input: ElementCollection<T>, internal_id: String, arrayIdentifier: String = "primaryElements") : super(input.data, arrayIdentifier, { it -> it.get("internal_id").asString == internal_id }) { this.input = input this.internal_id = internal_id } constructor(input: ElementCollection<T>, init: ElementInfo<T>.() -> Unit) : super(){ this.input = input init() initDefaults() } open val tags by stringSet() open val genre by stringSet() open val fullname by string() open var title by string() open var artist by stringSet() open var featured_Artist by stringSet() open var original_Artist by stringSet() open var remix_Artist by stringSet() open val origin by stringSet() open var storage_location by string() open var internal_id by string() } 

而这不(这个类用于单元测试)

 class FileConfig : Config("simpleConf.json"){ var testString by string(default = "hi") var testInt by int(1) var testBoolean by boolean(true) //still everything fine val deep by jsonObject(default = JsonObject()) var deepString by string(default = "deep", jsonObject = deep) var deepInt by int(default = 3, jsonObject = deep) var deepBoolean by boolean(default = true, jsonObject = deep, jsonName = "deepdeep") //This does not get compiled val testStringSet by stringSet() var configArray by jsonArray() var configObject by jsonObject() }