javaのthisについて質問です。enumで列挙した列挙子をvalues()で取得し、拡張for分で回す。拡張for分で取得した値を変数名.メソッドで呼び出しthisを使うとなぜ列挙子が出力できるのか分かりません。thisは自分自身
のインスタンスを指すと言われていますが、インスタンスを指していたらなぜ列挙子が出力されるのかthisの挙動がよく分からず困っています。分かりやすく教えていただきたいです。
public class Main{
public enum Fruit {
Orange(10),
Apple(2),
Melon(3);
// フィールドの定義
public int id;
// コンストラクタの定義
private Fruit(int id) {
this.id = id;
}
public void test(){
System.out.println(this);
}
}
public static void main(String[] args){
for(Fruit frt : Fruit.values()){
frt.test();
}
}
}
No.2ベストアンサー
- 回答日時:
Fruit.values()で列挙子それぞれのEnumインスタンス配列が取得されます。
Fruit frt : Fruit.values()これにより配列の1つの値がfrtに格納されます。
public void test()にとって自己インスタンスとは列挙子のインスタンスになります。
(C++のような例外はありますが)JavaやC#といったクラスベースオブジェクト指向の高級言語の場合全てがオブジェクトです。(プリミティブ型は特殊な挙動をしますが中身はオブジェクトです)
そこに何か値が設定されているという事はそこには全てインスタンスがあるという事です。
何かの値が取得できたという事はそこにインスタンスが存在するという事です。
何かのメソッドを呼び出せたという事はそこにインスタンスが存在するという事です。
たとえstaticクラスでさえstaticの値を保持するためのインスタンスが1つ生成されます。
たとえenumであれstructであれ中身はクラスであり値を生成すればインスタンスが生成されます。
No.1
- 回答日時:
System.out.println(this);
ここの事言ってる?
根本的に考え方が間違えてる。
thisを使うと列挙子が出力されるのではない。
この場合、たまたまthisが列挙子だったから、上記のような記述ができるだけ。
以上。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
インスタンス参照でアクセスで...
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
オブジェクト参照がオブジェク...
-
private static という変数の修飾
-
C# インスタンスの破棄
-
生成したインスタンスを削除す...
-
インスタンスのハンドル
-
C++Builderで別Formから呼び出...
-
「インスタンス」の意味をわか...
-
C#「オブジェクト参照が必要で...
-
String a = "a"; と String b =...
-
文字列を日付に変換でParseExce...
-
VB.NET getとsetの概念がわかり...
-
VB6.0で、DLLを動的に参照したい
-
C#において、同じインスタンス...
-
インスタンスを同じ名前で作成...
-
クラスのインスタンス名をクラ...
-
変数の参照でエラーが出てしま...
-
データベースから日付型を取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
オブジェクト参照がオブジェク...
-
複数の変数を宣言する時、同時...
-
VB.NET getとsetの概念がわかり...
-
C# インスタンスの破棄
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
変数の参照でエラーが出てしま...
-
「インスタンス」の意味をわか...
-
[Visual C#] 優先される処理に...
-
文字列を日付に変換でParseExce...
-
javaのクラスの作り方、エラー...
-
フォームの存在をチェックする方法
-
newしないインスタンス?実体化...
-
C#「オブジェクト参照が必要で...
-
String a = "a"; と String b =...
-
他のファイルの変数参照
-
VB6.0で、DLLを動的に参照したい
おすすめ情報