Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RecyclerView:内部类不能有静态声明_Java_Android_Android Recyclerview - Fatal编程技术网

Java RecyclerView:内部类不能有静态声明

Java RecyclerView:内部类不能有静态声明,java,android,android-recyclerview,Java,Android,Android Recyclerview,我有点困惑。根据谷歌/安卓网站上的教程,我设置了一个RecyclerView,我发现以下错误: Inner classes cannot have static declaration 当然,我有一个嵌套的静态类,但android/google就是这样定义的 public class ItemsViewAdapter extends RecyclerView.Adapter<ItemsViewAdapter.ViewHolder> { // ...

我有点困惑。根据谷歌/安卓网站上的教程,我设置了一个
RecyclerView
,我发现以下错误:

 Inner classes cannot have static declaration
当然,我有一个嵌套的静态类,但android/google就是这样定义的

  public class ItemsViewAdapter extends RecyclerView.Adapter<ItemsViewAdapter.ViewHolder> {
       // ... 
       // ...
       public static class ViewHolder extends RecyclerView.ViewHolder {
           // ...
       }
公共类ItemsViewAdapter扩展了RecyclerView.Adapter{
// ... 
// ...
公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
// ...
}
为什么会出现这个错误?我听说最好对嵌套类使用
static
,这样就不会浪费一个引用,但是当前版本的android studio正在抱怨


有什么想法吗?

直接回答你的问题:

  • 内部类不能有静态声明

    这是完全正确的。这不是一个错误,错误信息甚至没有误导性

  • 我听说最好使用嵌套类作为静态类,这样就不会浪费引用

    你完全正确

  • 为您提供的解决方案:

    在项目中为
    ItemsViewAdapter
    创建一个新类(文件),这样就不会出现这样的错误


  • 一般性讨论

    Java和Android都支持您可以声明
    静态
    内部类/成员/函数,但是该类应该是父类。您不能在内部类中声明

    也就是说,
    class Main
    可以有
    静态类适配器
    ,但如果
    适配器
    类是
    Main
    的内部类,则它不能有自己的静态内部类/成员

    你能吃什么?

    class Main 
        static class Adapter
            static class Holder
    

    如果要将类的任何成员声明为
    静态
    ,则直接父类必须是该文件中的顶级主类

    为什么?

    class Main 
        static class Adapter
            static class Holder
    
    引用另一个答案,

    关于该主题的进一步阅读

    一,

    二,


    3

    您也可以简单地将ItemViewAdapter实现为一个静态类

    public static class ItemsViewAdapter extends RecyclerView.Adapter<ItemsViewAdapter.ViewHolder> {
        ... 
        ...
       public static class ViewHolder extends RecyclerView.ViewHolder {
           ...
       }
    
    公共静态类ItemsViewAdapter扩展了RecyclerView.Adapter{
    ... 
    ...
    公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
    ...
    }
    

    这应该会解决错误

    这很可能是一个bug。这个问题与您的问题类似。很好!非常好的解释!谢谢。“静态内部类/成员/函数”在术语上是一个多重矛盾。