【问题标题】:Is it possible to access a value within and enum outside an enum是否可以访问枚举内和枚举外的值
【发布时间】:2015-05-10 06:29:49
【问题描述】:

例如我在另一个类中定义了一个枚举,

EnumClasses.java 我可以通过

在不同的类中访问它
    import java.io.DataInputStream;

    public class Thread1 extends Thread {

    declared variables here (variables not relevant)
    initiated variables here (variables not relevant)
    DataInputStream dis;

    }
    public void run() 
    {
        while (true)
        {
          try {
    int mesgType = dis.readInt(); 
            System.err.println(mesgType);

            switch (mesgType) {
    case EnumClasses.MYENUM:

    String data;
    data = myData;

    break;
                 } 
             }
         }
    }

我想知道是否可以访问该 ENUM 之外的 ENUM 内的值。 例如

    public static void myMethod(){

    System.out.print(data);

    }

这可能还是不可能,如果可能我该怎么做?

【问题讨论】:

  • 您的第一段代码似乎只是随机的 sn-ps - 很难说出您实际想要实现的目标。如果你能展示一个简短但完整的例子,帮助你会容易得多……
  • 不太清楚你的意思,但也许这个编辑会有所帮助。,
  • 我没有看到任何编辑,也绝对没有看到一个简短但完整的程序来说明问题。
  • 短是好的 - 但是EnumClasses.MYENUM: 的语法是什么?我不认为我要求有某种意义的代码是不合理的......
  • 整件事对我来说仍然完全不清楚。您没有显示任何MyEnum 的声明,我仍然不明白data 是要在此处声明还是在其他地方声明。 Nice Cow 的回答看起来很相关,但如果您认为不是,那么我什至更加对您要查找的内容感到困惑......

标签: java variables enums scope


【解决方案1】:

如果我正确理解了这个问题,您似乎想以某种方式阅读Enum 的内容。一个简单的例子,根据我认为你的要求如下:

enum Numbers {
    ONE ( 1, "One" ),
    TWO ( 2, "Two" );

    private int value;
    private String name;

    private Numbers ( int value, String name ) {
        this.value = value;
        this.name = name;
    }

    public int getValue () {
        return this.value;
    }

    public String getName () {
        return this.name;
    }
}

public class EnumExample {

    private void performTask () {
        System.out.println ( Numbers.ONE );
        Numbers numbers = Numbers.ONE;
        System.out.println ( "Value: " + numbers.getValue () );
        System.out.println ( "Name: " + numbers.getName () );
    }

    public static void main ( String[] args ) {
        new EnumExample ().performTask ();
    }
}

输出:

C:\Mine\java\bin>java EnumExample
ONE
Value: 1
Name: One

【讨论】:

    【解决方案2】:

    在 Enum 上查看此示例:

    public enum Level {
        HIGH,
        MEDIUM,
        LOW
    }
    
    public class Test
    {
        public enum Status {
            Opened,
            Closed,
            Waiting
        }
    }
    
    public class abc {
    
        public static void main(String args[]) {            
            System.out.print(Level.HIGH);
            System.out.print(Test.Status.Opened);
        }
    }
    

    一个很好的参考Java Enums

    【讨论】:

    • 为什么要将Status 嵌套在Test 中?我完全不清楚这是否回答了 OP 的问题......部分原因是这个问题非常不清楚。
    • 这个答案是最接近的,虽然不太正确,我不知道如何在不膨胀网页的情况下再编辑代码,我会给出我得到的确切错误:原始类型 int classname.Enum 没有字段数据,如果这对您没有帮助,建议我将其删除,因为我无法完全理解如何在不膨胀的情况下正确地详细解释它...
    • @CodeRequired - 我现在从您的代码中了解到,您想在 Enum Switch-Case 之外访问 data 变量。您在 case 语句中声明 "String data;" 然后如何在该范围之外访问它。要访问数据变量,您可以在类级别声明 "String data;",然后在 case 语句下执行任何赋值。让我知道这是否有帮助?
    猜你喜欢
    • 2014-08-04
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2022-11-10
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多