2017-01-30 178 views
-2

我对枚举非常陌生,对编程只有初步的理解。我最近发现了关于枚举的问题,并相信它们是我的一些问题的完美解决方案,但需要一些关于如何将它们合并到我的代码中的帮助。如何使用另一个类中的枚举变量?

我开始创建一个枚举类。现在我正在为我的枚举使用7个常量,并且每个常量都有1个描述(?)它的String变量。我如何编码?更重要的是,我如何从另一个课程访问此课程?例如,我想打印与常量相关的字符串,即我的枚举的当前值。请帮忙。这对我来说真的很难形容,所以希望你们知道我想要问什么。

+0

不要解释你的代码 - 把一些在你的问题! – GhostCat

+1

https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html – shmosel

+0

试试这个链接http://www.java2novice.com/java-lang/enum/defined-inside-class/ –

回答

-3

对不起我不好说,使其静态

让它公开。以便可以从导入类的任何类访问它。

化妆somethingn这样从不同类

public class DifferentClass 
{ 
    public enum reportType 
    { 
     firstReport = 1, 
     secondReport = 2 
    } 
} 

进口该类和访问它喜欢的System.out.println( “报告类型:” + reportType.firstReport);

+0

Make什么'公共静态“?实际上,枚举常量已经是。只有常量和某些实用方法应该是“公共静态”。否则这种模式通常会导致麻烦。你的解释不清楚“它”应该是什么。如果你的意思是一个变量来保存一个枚举值,那么任何超出局部范围的范围都是不可能的。请详细说明您的建议如何解决OP的问题。 –

+0

我建议在这个例子中,枚举应该是一个顶级类,它的名字应该遵守Java命名约定。另外,你有没有试过编译你的代码?因为它有错误。 –

-2

要声明一个枚举,按照这个synatx Colors("RED", "BLUE")

要访问的枚举类,声明为public类。如果该类在另一个包中,则将该类导入引用这些枚举的类中。

1

这已经涵盖了official tutorial

public enum Animal { 
    COW("moo"), // <== calls constructor with any enum specific data 
    HORSE("neigh"), 
    SHEEP("ba ba"); 

    private final String noise; // stores the data 

    private Animal(String noise) { // <== private constuctor 
     this.noise = noise; 
    } 

    public String getNoise() { // <== allow access to the data 
     return noise; 
    } 
} 

访问从另一个类

Animal animal = Animal.COW; 
System.out.println(animal.getNoise()); 
+0

'noise'应该是'final'。 –

+0

但是,如果没有指定COW,你会怎么做?给定任何给定的枚举值,如何获得相应的动物声音? – Connor

+0

私有构造函数在这里还有什么函数? – Connor

-1

枚举常量覆盖toString方法,以便在默认情况下它返回常量的字符串名字。你甚至可以进一步覆盖它。

Javadocs是你的朋友:http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#toString--

你也可以经常直接使用枚举常量本身。

public enum Rainbow { 
    RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET; 
} 

使用的一种方法:

Rainbow rainbow = findRainbow(); 
switch (rainbow) { 
    case RED: 
    rosso(); 
    break; 
    case YELLOW: 
    giallo(); 
    break; 
    . . . 
    case VIOLET: 
    viola(); 
    break; 
} 

此外,枚举的类,你可以给他们更多的方法,甚至不同的覆盖方法对每个枚举常量。像Java已经与toString一样。

@shmosel已经给出了enum教程的链接。