こんにちは。
お世話になります。
早速、質問なのですが、
内部クラスを別のファイルに記述することは出来ますでしょうか?
// MainClass.java
public class MainClass{
/*
*/
private class InnerClass1{
}
private class InnerClass2{
}
}
これのInnerClass1とInnerClass2をそれぞれ
InnerClass1.java、InnerClass2.javaファイルのように別のファイルに記述したいと思っています。
出来そうな気はするのですが内部クラスについて
書いてある本やサイトはすべて同じファイルに書いてあったもので・・・
方法がありましたらよろしくお願い致します。
No.3ベストアンサー
- 回答日時:
こんにちは。
このページ↓にあるように、
http://milkyway.merseine.nu/Java/Java999.html
内部クラスというのは、コンパイラがコンパイル時にチョチョッと小細工しただけの普通のクラスでしかないので、この小細工を自分でやれば、同機能のものは可能だと思います。
する小細工は、
1.内部クラスに外部クラスの参照を保持する。
2.外部クラスのアクセス制限されたメンバ変数やメソッドに、アクセスできるように秘密の抜け道を作る。
しかし、1.はともかく、2.はコンパイラがこっそり付け加えるならともかく、ソースコードに堂々と書いてあると、プログラマが内部クラスとしたクラス以外からは、使わないと硬く心に誓わないと、アクセス制限の意味がなくなっちゃいますよねぇ。
ソースコードも読みにくくなるでしょうし。
もし、1.だけですむのなら、それに越したことはないと思います。
参考URL:http://milkyway.merseine.nu/Java/Java999.html
なるほど。
内部クラスがそんな仕組みだったとは。
でも、おっしゃる通りこれをコードでやろうとすると
ソースが読みにくくなりますね。
やはり素直に同じjavaファイルに書くことにします。
ですが、こんな質問をしなければこの先ずっと
こんな仕組みを知ることは出来なかったと思います。
とてもよい勉強になりました。
ありがとうございました。
No.2
- 回答日時:
No.1さんとは真逆になりますが、もしできるとして、そもそもどう記述します?
Javaのクラスは複数ファイルに分けて記述できないはずだし、内部クラスはネストしたクラスだから外側のクラスから取り出せないでしょう。
内部クラスである必要がないクラスなら単純に別クラスにしてしまえば宜しいですけど。
この回答への補足
コンパイル時に別のjavaファイルに記述したクラスを内部クラスとして
一緒にできないかと考えていたんですけど、
やっぱり無理なんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) VBAの参照先のファイル名をセルに書いて代入したい 2 2022/04/04 13:42
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/26 17:13
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オブジェクト指向プログラミン...
-
SQLです教えてくださいお願いし...
-
java eclipse 型に解決できません
-
グローバルIPとプライベートIP...
-
配列の重複する値とその個数を...
-
重複エラーを解決するには
-
自作のクラスファイルがインポ...
-
main()を持つクラスが2つ以上...
-
EclipseでJSPのコンパイルエラー
-
コンボボックスのマウスホイー...
-
河合塾のクラス分けについて
-
ATLとMFCの違いは何でしょうか?
-
「天声人語」をインターネット...
-
dllと同じプロジェクトにする方法
-
中学2年です‼︎ 明日.学級の級長...
-
メール本文をbase64でエンコー...
-
クラスTシャツの背ネーム 面白...
-
Lsit<LabelValueBean>について
-
修学旅行での演芸大会の出し物...
-
フレームとウィンドウの違いに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
河合塾のクラス分けについて
-
同じクラスにならない確率を教...
-
3年間同じクラスになる確率
-
「天声人語」をインターネット...
-
グローバルIPとプライベートIP...
-
配列の重複する値とその個数を...
-
java eclipse 型に解決できません
-
同一パッケージにあるクラスが...
-
私はクラスLINEにまだ入れてな...
-
老い先短い ジジィ が ふと 思う...
-
自作のクラスファイルがインポ...
-
どこからも呼ばれていない無意...
-
main()を持つクラスが2つ以上...
-
数学の計算問題。 3年間同じク...
-
クラス見てから 女の子5人 ネタ...
-
javaのコンパイルができません...
-
1 つのヘッダファイルに複数の...
-
重複エラーを解決するには
-
IPアドレスの3バイト目の呼び方
-
packageとimport の違いって?
おすすめ情報