###質問内容
Javaを学んで約2か月です。
Mainメソッドから呼んだ、処理を行うクラスのフィールドで、配列を用いて別のクラスのインスタンスを生成したいです。
以下のソースコードで生成したところ、「メソッド名が無いのにどのように呼び出すのか」という指摘を受けました。
コンパイル、実行共にできています。
・初期化子にはその配列に格納したいデータを入れる
・int[] hoge = new int[]{10,20,30};もしくは、int[] hoge = {10,20,30}のような使い方が正しい使い方である
以上のように配列の記述方法を認識しています。
指摘を受けるまでは、”初期化子としてFor文を記述しているので、メソッド内で記述していなくても動作するのではないか”、と考えていました。
その後、検索をしたり、テキストを読み直してもこの書き方をしている物が見当たらないので、書き方が誤っているのだろう、というのは見当が付きました。
・なぜメソッドが無いのにこの書き方でエラーが起きないのか
・フィールドで配列を用いてインスタンス生成したいときの正しい記述方法
以上の2点について教えていただきたいです。
よろしくお願いします。
###該当のソースコード
Java
1public class Hoge{ 2//その他に変数を3つ定義中 3 HogeHoge[] hoge = new HogeHoge[10];{ 4 for(int i = 0; i <= 9; i++){ 5 hoge[i] = new HogeHoge(); 6 } 7 } //以下にメソッドが2つ 8}
###試したこと
Java
1HogeHoge[] hoge = new HogeHoge[10]{ 2 for(int i = 0; i <= 9; i++){ 3 hoge[i] = new HogeHoge(); 4 } 5 }
→エラー:';'がありません
その他、該当部分のどこかをいじるとFor文以降がコンパイルエラーになります。
この書き方以外ではエラーが起こるのになぜこれだけ問題なく動く…?と疑問が深まるばかりでした。
Java
1//インスタンス生成を行うためのメソッドを作成 2public static void main(String[] args){ 3 HogeHoge[] hoge = new HogeHoge[10];{ 4 for(int i = 0; i <= 9; i++){ 5 hoge[i] = new HogeHoge(); 6 } 7 } 8}
→同一クラス内のメソッドにhogeが存在しない旨のエラーが表示される(ほかのメソッドからスコープ範囲外になるのでエラーになると認識しています。)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/29 06:21 編集
2017/05/29 06:22
2017/05/29 06:59
2017/05/29 07:07
2017/05/29 08:23 編集