【问题标题】:Declaring and Instantiating inside a class block在类块中声明和实例化
【发布时间】:2012-11-15 21:23:10
【问题描述】:

在类块中:

而不是像这样创建一个对象(在这种情况下是一个简单的字符串):

public String one = "Hello!";

我想这样做:

String one;
one = "Hello!";

但是编译器会抛出:

error: <identifier> expected

为什么?为什么第二个必须在方法中?

【问题讨论】:

  • 是编译时错误还是运行时错误?如果是运行时,则粘贴堆栈跟踪。
  • @BhavikAmbani 这是编译时间

标签: java object block


【解决方案1】:

看起来这应该在某种构造函数中...无论哪种方式,您都必须将它放在方法或构造函数(或其他代码块)中。这只是 Java 语法的规则之一。

public String one;

public MyClass() {
    one = "hello";
}

如果您填写了static 字段,您可以拥有

public static String one;

static {
    one = "hello";
}

【讨论】:

    【解决方案2】:

    很有可能

    one = "Hello!"
    

    位于类块中。该语句必须出现在代码块内——即;方法、构造函数或静态初始化程序。例如:

    void myMethod() {
        String one;
        one = "Hello!";
    }
    

    非声明性语句不能出现在类块中。

    【讨论】:

      【解决方案3】:

      one = "Hello!"; 行需要在方法内。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多