• ベストアンサー

publicフィールドの使いどき

http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000130.html このサイトには「フィールドは特別な場合を除き全てprivateにし」と書いてありますが、 特別な場合とは具体的にはどのような時ですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

まず考えられるのはstatic finalな定数・不変オブジェクトとしての使うとかでは無いでしょうか。 Hello Worldからお世話になる標準ライブラリのSystemクラスのout等のフィールドもpublicかつstatic finalな不変オブジェクトですね。 自作クラスであっても、引数により振る舞いを変える様なメソッドの引数用にpublicな定数フィールドを切る事はあります。 JDK1.5以降はenum型の使用を考慮すべき局面も増えているとは思いますが。 非static finalなpublicなフィールドを定義する事は、カプセル化の概念に基づいて考えた時、余程の理由があってもNGです。 限定的な話にはなりますが、SAStrutsというフレームワークではアクションクラスのフィールドをpublicで定義します。 これは非static finalで定義しますが、こうする事でフレームワーク側がアクセッサを持つ「プロパティ」として見なすという独自の規約によるものです。 こういうのは本当に特別な場合にあたるのでしょうね。

okonekat
質問者

お礼

本当にありがとうございます! もやもやしてたものが消えました! ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 画像の切り替えについて

    http://www.kab-studio.biz/Programing/AjaxEroge/20050822a/index.html これを使わせてもらっているのですが、ボタンをクリックして画像を読み込んだときにページを一番上に戻す(移動する)というような事はできないでしょうか?

  • セッションIDの取得の必要性

    セッションIDの取得の必要性について教えてください。 Webアプリケーション制作で、 セッションIDは必ず取得しないといけないものなのでしょうか? セッションIDの役割とはなんなのでしょうか? 何が必要でこのセッションIDは存在しているのでしょうか? 参考URL  http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000817.html 内容を読んでみたところ 「このセッションIDを直接取り扱うことはないだろう。」とも書かれているのですが^^; 「セッションオブジェクトに値を設定する」などという目的の場合には、特別、セッションIDは取得しなくても構わないでしょうか?

    • ベストアンサー
    • Java
  • C++ includeファイルの検索

    以下のサイトを参考にC++の勉強をしています。 http://www.kab-studio.biz/Programing/Codian/MxA/09.html 残念ながら上記サイトにはどのファイルをインクルードすれば いいのか記述されておりません。Visual C++ 2008 Express Editionを 使用しているのですが、インクルードファイルを自動的に検索して ソース上に挿入するような機能はないのでしょうか?

  • ComparableとComparatorの違いについてわからなくて困っています。

    ComparableとComparatorの違いについてわからなくて困っています。 以下のURLのサイトを記事を見ているのですが、 http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000179.html http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000180.html java.lang Comparableインタフェース メソッド public int compareTo(Object o) java.util Comparatorインタフェース メソッド public int compare(Object o1, Object o2) public boolean equals(Object obj) これらの違いについてなのですが、URLの記事では、 ・Comparableインターフェイスの実装クラスにしてcompareTo()メソッドを実装するのは、比較対象が明確であり、比較結果が一般的に分かりやすく容易に想像できる場合にのみとした方がよい ・Comparatorは任意の順番でソートしたい場合にも使用できる。例えば、昇順ではなく降順でソートしたい場合や、複数のデータを持つクラスについて細かく比較方法する場合 と記事にありますが、説明がうまく解釈できないです。 ・Comparableは主にラッパークラスやStringなどで使用するためのものなのでしょうか?(実装してるからそうだとは思いますが) 比較対照が明確なので compareToのreturn文で 除算するだけで可能? ・ComparatorはArraysやコレクション、自作クラス向けに任意の順番でソートするためのものなのですか? 自作クラスについてはComparableでもcompareTo()をオーバーライドすれば同じことが可能? 通常はComparator実装クラスのcompare()の中にreturn文でcompareTo()を使用しているような気もします。 この方法だとObject型で引数を渡して、int型に変換して比較になると思いますが、 StringだとComparableを実装してるから、戻り値でint型が返るのかな、 public int compare(String s1, String s2) { return s2.compareTo(s1) } つまり、自作クラスはインスタンスフィールドにある基本型やObject型(String, Integerなど)の値を使い、 基本型においては除算を使用し、オブジェクト(Comparableを実装しているもの)に対してはcompareTo()で比較するのでしょうか? (これで解決したような気もしますが) 質問がわかりずらくてすみません。何か解釈の間違いがあればご指摘お願いします。

  • 引数の概念について質問

    引数とは、以下のURLに次のように定義されていました。 「メソッドを呼び出す際に渡された値を受け取る変数。」 http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000160.html 質問:引数とは、「あるメソッドに入力する(渡す)値」ですよね?それなのに、「メソッドを呼び出す際に渡された値を受け取る変数。」とかいてありますが、これはどういうことですか? java初心者の私でもわかりやすいように解説してくだされば幸いです。 質問2:上記URLに以下のようなことも書かれていました。 「呼び出す際に「メソッド名( 引数に渡す値 );」という書式で「引数の変数」に「引数に渡す値」をコピーすることができる。 このコピーは、変数の代入と全く同じである。」 これもよく意味がわかりません。 とくに、「引数の変数」という記述がよくわかりません。また、なぜ変数の代入と同じなのですか? うーん、、よくわからない。

    • ベストアンサー
    • Java
  • フィールドコートのない文書にしたいのですが。

    ワード2002を使用しています。 ネットからダウンロードしたワード文書には、たくさんのフィールドがあります。 このフィールドをすべて消して、自由自在に入力可能なフィールドのない文書にしたいのですが、どのようにしたらできますでしょうか!? よろしくお願いします。

  • 数式フィールドの互換性?

    Word 98で「数式」フィールドの入った文書を作成しました。 その文書をWord 2000で開くと、文書の中のフィールドがすべてエラーになっている、と言われました。 Word 98 とWord 2000のフィールドに互換性がないとは考えられないので、 Word 2000の側に、何か足りないものがあるのでしょうか。 「数式」フィールドを使用することが頻繁にあり、 また、職場のPCなので勝手にアップデートするわけにも行かず、困っております。 なお、当方は、Windows 95 で Word 98 を使用しており、 先方は、Windows 98 で Word 2000 を使用しています。

  • Wrodでのフィールドの保存時の自動更新

    教えてください。 Wordでフィールドを挿入しています。(目次など) 通常、F9キーで自分で更新をしていますが、文書の保存時にフィールド更新を行ってくれるようにすることができますでしょうか? よろしくお願いします。 Word2003を使用しています。

  • 複数フィールド対してLIKE '% %' したい

    SQL初心者なのですが、複数のフィールドをターゲットにしたフリーワード検索用のSQL文の書き方が解らず困っております。 例えば以下の様に"責任者"フィールドを限定して"田中"さんを探す事は出来るのですが、 ---------------------------------------------------------------- SELECT * FROM `会員表` WHERE 責任者 LIKE '%田中%' ---------------------------------------------------------------- 複数の、例えば以下の3つの ●責任者フィールド ●担当者フィールド ●顧客フィールド 全てを対象に一括で”田中”さんを検索したい場合、 どのように記述すれば良いのでしょうか? どなたか有識者の方いらっしゃいましたら宜しくお願いします!!

    • ベストアンサー
    • MySQL
  • wordフィールドの挿入

    ワード文書にエクセルからのデータ挿入について教えてください。 エクセルのデータで「"日付"フィールド」が空白の場合には『年月日』を、「"日付"フィールド」に日付が入力されている場合は、その日付をワード文書に挿入したいのですが、よく分かりません。 エクセルフィールド空白の場合、ワード文書への『年月日』挿入はできました。 恐らく「if then else」あたりを使用すると思うのですが、ご存知の方ご教授いただけないでしょうか。

このQ&Aのポイント
  • DigitalTVBoxの番組検索において、最近4K放送のみの結果が表示される問題が発生しています。
  • 設定の変更やソフトの更新を行っても問題は解消されず、2日前から続いています。
  • この問題については、富士通FMVのユーザーからの質問です。
回答を見る