1

最初のものはenumクラスです

enum coffeeSize{
    BIG(8), HUGE(10), OVERWHELMING(16);
    private int ounces;
    coffeeSize(int ounces ){
        this.ounces = ounces;
    }
    public int getOunces(){
        return ounces;
    }

}

これはクラス CoffeeTest1 とメインです

 public class CoffeeTest1 {
      coffeeSize size;

      public static void main (String args[]) {
          CoffeeTest1 drink1 = new CoffeeTest1();
          drink1.size = coffeeSize.BIG;

          System.out.println(" " + drink1.size.getOunces());
      }
}

以下が出力されます

8  

私の質問: 8 を出力する方法がわかりませんdrink1.size.getounces()。コンストラクターcoffeeSize(8)オブジェクト (例: coffeeSize somex = new coffeeSize(BIG)) を指定していません。この単純で微妙なロジックの背後にあるものを知りたいです。誰かが私を理解するのを手伝ってくれますか?

4

5 に答える 5

1

「drink1.size.getounces()」が8を出力する方法がわかりません。

[...]

この単純で微妙なロジックの背後にあるものを知りたいです。

この背後にあるロジックを理解するには、あなたenumを通常のものと考えることができますclass(実際にはコンパイル方法です)。

BIG(8)

に似たこのクラスのインスタンスとして

new coffeesize(8);

なぜdrink1.size.getOunces()プリント 8:が列挙型BIGの単なるインスタンスであり、それを構築するときに 8 に設定するのかは明らかです。coffeesizeounces

于 2012-06-21T16:21:29.943 に答える
1

1 つの提案: Sun の Java コーディング標準を見つけて学習し、それに従ってください。コードの可読性が向上します。

列挙型によると、BIGコーヒーサイズのオンス単位のサイズであるため、8が出力されます。これは、BIG コンストラクターに渡した値です。

drink1coffeeSizeは、という名前のパッケージ可視データ メンバーを持つクラスのインスタンスですsize。すべてcoffeeSizeのインスタンスには、getOuncesコンストラクターに渡した整数値を返すメソッドがあります。

それについて微妙なことは何もありません。

于 2012-06-21T16:17:30.070 に答える
0
enum Colour {
   Black,White,Red,Green,Yellow,Grey
}

public class EnumExample {

   public static void main(String[] args) {

     Colour colour;

     colour = Colour.Black;

     System.out.println("Selected "+colour+" Colour");

     colour = Colour.Yellow;

     System.out.println("Selected "+colour+" Colour");
  }

}
于 2016-05-25T11:19:10.383 に答える
0

getOuncesメソッドが列挙型で定義されていることに気付くでしょう。Java では、列挙値自体がプロパティとメソッドを持つことができます。

CoffeeTest1列挙値を参照するフィールドがあることを意味します。

drink1そのクラスのインスタンスもそうです..
プロパティはsize列挙型のBIGインスタンスに設定されています..8
Bigを持っていouncesます.

于 2012-06-21T16:18:11.483 に答える
0

作成することを指定BIG(8)すると、コンストラクターに 8 が渡されます (10 または 16)。それを使用するとcoffeeSize.BIG.getOunces()、そのメソッドが呼び出されますgetOuncesBIGHUGEおよびはそれぞれ独自の状態を持つOVERWHELMINGa の可能な値です。coffeeSize

于 2012-06-21T16:18:34.487 に答える