修饰符“覆盖”不适用于“本地功能”

Posted

技术标签:

【中文标题】修饰符“覆盖”不适用于“本地功能”【英文标题】:Modifier 'override' is not applicable to 'local function' 【发布时间】:2020-06-16 14:24:03 【问题描述】:

android 中使用 firebase realtime datqabase 时出现以下错误

 val catListener =  object : ValueEventListener 
        override fun onDataChange(dataSnapshot: DataSnapshot) 
            if (dataSnapshot.exists()) 
                // Get Post object and use the values to update the UI
                for (eventSnapshot in dataSnapshot.children) 
                    val name = eventSnapshot.child("name").getValue() as String
                    list.add(Category(name));
                

                var adp = CategoryAdapter(list);
                cat_rv.adapter = adp

                adp.onItemClick =  pos, view ->

                    i.putExtra("category", list[pos].name)
                    startActivity(i)
                
            

            override fun onCancelled(databaseError: DatabaseError) 
                // Getting Post failed, log a message
                Log.w("Category", "loadCat:onCancelled", databaseError.toException())

            
        

错误--

修饰符'override'不适用于'local function'(指对象:ValueListener

对象不是抽象的,没有实现抽象成员public 抽象乐趣 onCancelled(@NonNull p0: DatabaseError): 单位定义在 com.google.firebase.database.ValueEventListener

【问题讨论】:

【参考方案1】:

您缺少各种语法 - 主要是右大括号。这至少是让您获得有效 Kotlin 语法的原因。

    val catListener =  object : ValueEventListener 
        override fun onDataChange(dataSnapshot: DataSnapshot) 
            if (dataSnapshot.exists()) 
                // Get Post object and use the values to update the UI
                for (eventSnapshot in dataSnapshot.children) 
                
            
        

        override fun onCancelled(databaseError: DatabaseError) 
            // Getting Post failed, log a message
            Log.w("Category", "loadCat:onCancelled", databaseError.toException())

        

【讨论】:

是的,很抱歉我提供了部分代码。上面的代码给了我一个错误 看看我有什么。我编辑了我的问题。仍然出现同样的错误。 您仍然有语法错误。这里没有足够的信息来了解您要表达的意思。请尝试自行解决语法问题 - Stack Overflow 不是一个很好的编译器错误迭代论坛。【参考方案2】:

改变这个:

 val catListener =  object : ValueEventListener 
        override fun onDataChange(dataSnapshot: DataSnapshot) 
            if (dataSnapshot.exists()) 
                // Get Post object and use the values to update the UI
                for (eventSnapshot in dataSnapshot.children) 
                    val name = eventSnapshot.child("name").getValue() as String
                    list.add(Category(name));
                

                var adp = CategoryAdapter(list);
                cat_rv.adapter = adp

                adp.onItemClick =  pos, view ->

                    i.putExtra("category", list[pos].name)
                    startActivity(i)
                
            

            override fun onCancelled(databaseError: DatabaseError) 
                // Getting Post failed, log a message
                Log.w("Category", "loadCat:onCancelled", databaseError.toException())

            
        

进入这个:

 val catListener =  object : ValueEventListener 
        override fun onDataChange(dataSnapshot: DataSnapshot) 
            if (dataSnapshot.exists()) 
                // Get Post object and use the values to update the UI
                for (eventSnapshot in dataSnapshot.children) 
                    val name = eventSnapshot.child("name").getValue() as String
                    list.add(Category(name));
                

                var adp = CategoryAdapter(list);
                cat_rv.adapter = adp

                adp.onItemClick =  pos, view ->

                    i.putExtra("category", list[pos].name)
                    startActivity(i)
                
              
           

            override fun onCancelled(databaseError: DatabaseError) 
                // Getting Post failed, log a message
                Log.w("Category", "loadCat:onCancelled", databaseError.toException())

            
        

您缺少括号

【讨论】:

以上是关于修饰符“覆盖”不适用于“本地功能”的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们不能在 C# 中覆盖方法时更改访问修饰符?

Swift:文本()的.font的条件修饰符

第10讲:访问修饰符.重载.覆盖

Java 继承和覆盖方法 - 修饰符的影响

如何使用适当的可访问性修饰符覆盖 SwiftUI Picker

java修饰符和基本操作符