【问题标题】:static variable declaration in class java [duplicate]java类中的静态变量声明[重复]
【发布时间】:2018-02-16 09:07:07
【问题描述】:

为什么这个声明是错误的?此声明导致标识符预期错误

class Abc{
    static ArrayList<Integer> p;
    p = new ArrayList<Integer>(); // identifier expected error
} 

【问题讨论】:

  • 在第二行放置花括号
  • 或者只是这样做: static ArrayList p = new ArrayList(); .. 更好的方法是编写接口代码并使用更新的方式来处理泛型: static List p = new ArrayList();
  • "为什么这个声明是错误的?" p = new ArrayList&lt;Integer&gt;(); 不是声明,是初始化
  • @akshayapandey:还是错了。

标签: java


【解决方案1】:

您的班级正文中有一个独立的作业说明。你不能在那里有分步代码,它必须在某些东西(初始化程序块、方法、构造函数……)中。在您的具体情况下,您可以:

  • 把它作为初始化器放在声明中

    static ArrayList<Integer> p = new ArrayList<>();
    
  • 将其包装在 static 初始化块中

    static {
        p = new ArrayList<Integer>();
    }
    

the tutorial on initializing fields 中的更多信息。

【讨论】:

    【解决方案2】:

    这是正确的做法:

    import java.util.ArrayList;
    
    public class Abc {
        static ArrayList<Integer> p;
        static {    
            p = new ArrayList<Integer>(); // works
        } 
    }
    

    【讨论】:

    • 这是一种可行的方法,不过还有很多可能的改进。
    • 真的。粘贴的代码是错误的。我的意思是这是正确的语法(大括号)
    猜你喜欢
    • 2021-10-30
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多