質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

2328閲覧

enum型をコンストラクタの引数として使用したい

KeitaK

総合スコア5

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2020/10/03 11:07

以下のコードのようにenum型を引数にした時、"列挙型定数が必要です"とコンパイルエラーとなります。この列挙型定数とは何でしょうか。また引数としてどのように使用するのでしょうか。

Java

1class Enum { 2 3 Number number; 4 private String name; 5 6 public Enum(String name, Number number){ 7 this.name = name; 8 this.number = number; 9 } 10 11 public enum Number{ 12 10, 13 20, 14 30 15 } 16 17 public String getname(){ 18 return name; 19 } 20 21 public Number getNumber(){ 22 return number; 23 } 24 25 public String toString(){ 26 String str = name + " " + number; 27 return str; 28 } 29} 30 31 32class Sample1{ 33 public static void main(String[] args){ 34 35 Enum enum1 = new Enum("太郎", 10); 36 System.out.println(enum1); 37 } 38} 39

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

クラス名を変える必要は無いようです。

10, 20, 30 を e10, e20, e30 に変更し、
Enum enum1 = new Enum("太郎", Enum.Number.e10); とすれば、
コンパイルできて、実行できます。

投稿2020/10/03 15:57

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KeitaK

2020/10/04 02:28

できました。ありがとうございました。 まずはenumについて勉強してみます。
guest

0

クラス名を変えましょう、ってことですわな。

投稿2020/10/03 11:22

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

この列挙型定数とは何でしょうか。

java

1public static final int CONST = 10;

このCONSTにあたる、定数の名前のことです。
enumの記述のルールに則ってコードを読むと、

java

1 10, 2 20, 3 30

これがそれに相当することになりますが、変数名と同様の規則に準じるため、数字から始まる名前をつけることはできません。

投稿2020/10/03 12:43

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2020/10/03 12:44

書いてから思ったが、それどころの話じゃなかったわ
shiketa

2020/10/03 12:55

@KeitaKさん あなたの停止したEnumクラスは、java.lang.Enum https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Enum.html クラスとパッケージが異なるとはいえ名前がかぶっているし、 Number列挙型は、java.lang.Number https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Number.html クラスとこれもパッケージが異なるとはいえ名前がかぶっている。 わたしも回答してみようかと考えましたが、この点を説明するのが大変そうだったのでやめときました orz
KeitaK

2020/10/04 02:28

まずはenumについて勉強します。
guest

0

この列挙型定数とは何でしょうか。

Enumのことです。Enum自体に「列挙型」という意味があります(google翻訳でもそう出ます)。

また引数としてどのように使用するのでしょうか。

定数なので、動的な情報を扱うことになるnewはしません。
定義の仕方間違ってます。

下記のような記事を読んで、概念や考え方からおさえたほうが良いです。
Javaの定数はEnumで! Enumの使い方から考え方までお伝えします

投稿2020/10/03 11:13

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KeitaK

2020/10/04 02:27

ご回答ありがとうございます。 まずはenumとは何か勉強します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問