繁体   English   中英

为什么枚举引用变量不能单独声明在方法之外?

[英]Why enum reference variables cannot be declared outside method on its own?

在为枚举类型创建引用变量时,我对这些规则感到困惑。

外部主要方法:

[A] 当我自己创建一个枚举引用变量时,我遇到了一个语法错误。 但是,[B] 当我将此引用变量连接到枚举常量时,它在某种程度上很好。

当我尝试将 [A] 和 [B] 放在 main 方法中时,这种情况会更加复杂 - 作为 [X] 和 [Y]。

内部主要方法:

[X] 和 [Y] 都可以。 我能够像在 [A] 中一样创建引用变量 [X],但没有错误。

因此,我认为问题的根源在于 [A] 在主要方法之外,但 [X] 在方法内。

我可以在方法内部创建引用变量来枚举,但是在外部这样做会产生语法错误。 有谁知道为什么会这样? 非常感谢。

enum Transport {
    CAR, TRUCK, AIRPLANE, TRAIN, BOAT
}

public class EnumDemo {

    Transport tp; // <A> - syntax error on ';'
    tp = Transport.AIRPLANE;
    Transport tb = Transport.AIRPLANE; // <B>

    public static void main(String[] args) {
        Transport tp; // <X> but this is fine.
        tp = Transport.AIRPLANE;
        Transport tb = Transport.AIRPLANE; // <Y>
    }
}

这与枚举无关:您不能在方法或块之外编写语句,您只能声明成员。

这会起作用:

public class EnumDemo {

    Transport tp; // <A> - syntax error on ';'
    {
        tp = Transport.AIRPLANE;
    }
    //...

tp =周围的{}称为实例初始化器 这些相对不常见,并且有些混乱,因此您应该更喜欢直接在字段上分配(也许定义一个方法来封装必要的逻辑),或者在构造函数中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM