No.2ベストアンサー
- 回答日時:
#1 では、内部クラスとインターフェースでの static フィールドの扱い方の違いをあまり説明していなかったので補足します。
インターフェースでは public なメンバー以外持てませんが、その点以外の static フィールドの扱いは、内部クラスでもインターフェースでもほぼ同じで、下記の様になります。
・final でない static フィールドは持てない
・final である static フィールドは持てる
ただし、インターフェースは public static final のフィールドしか持てない事が決まっているので、構文上はそれらの記述を省略できます。
下記の例では AAA も BBB も CCC も public static final な定数です。
interface Hoge {
public static final String AAA = "aaa";
String BBB = "bbb";// 実は public static final な定数。省略されているだけ。
static String CCC = "ccc";// 実は public static final な定数。省略されているだけ。
}
なお、細かいことを言えば、内部クラスの static フィールドは、定数か定数のみを含む式で初期化されなければならない、transient を付けてもコンパイルエラーにならないなどの違いは有るようです。
No.1
- 回答日時:
インターフェイスのメンバーに定数が定義できるのは、インターフェイスが表すプロトコルの一部となりうるからです。
(本当は「(一般的な意味の)インターフェイスの一部となりうる」と言いたいところですが、「インターフェイスに定数が有るのはそれがインターフェイスの一部だから」では意味不明ですね)
例として java.sql.Connection を見てみましょう。
http://java.sun.com/javase/ja/6/docs/ja/api/java …
Connection には下記の様なメソッドが有りますが、引数の内、後ろの2つのint型には、ResultSet で定義された定数と Collection 自身で定義された定数を渡すことが前提になっています。
PreparedStatement pstmt = conn.prepareStatement(
"SELECT ・・・",
ResultSet.CONCUR_READ_ONLY,
Connection.TRANSACTION_NONE
);
http://java.sun.com/javase/ja/6/docs/ja/api/java …
この Connection.TRANSACTION_NONE は確かにint値を持ちますが、その値自身に意味は無く、トランザクションの種類を伝えることが役目です。したがって、これらの定数は実装ではなくプロトコルの一部だと言えます。
ただし、インターフェイスに定義されているからといって、必ずしもプロトコルの一部になるわけでは有りません。いわゆる定数インターフェイスに定義されている定数などは、多くの場合は値自体が意味を持っており、実装そのものでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java 複数TBLのオブジェクトを1つの変数(オブジェクト)でまとめて管理したい 1 2022/12/17 00:12
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- 学校 中2女子不登校です。中2の5月辺りからクラス替えの変化で1年の頃からのストレスによる頭痛が悪化し、体 2 2022/03/23 17:16
- 友達・仲間 文化祭の準備に行くべきか悩んでいます。 高校生女子です。 私は不登校気味で、終業式にも行けませんでし 6 2022/07/21 13:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel vbaのプログラムでガンマ...
-
compareToにおける「自然順序付...
-
Daoクラスはまとめるべきですか
-
JTextFieldの入力制限
-
ASP.NETでの共通コードの書き方...
-
インタフェースのstatic変数(Java)
-
(vba)他のアプリケーションの右...
-
「インターフェイス」って何の...
-
スタックで成績表を作るプログ...
-
C++で参照カウンタを実装したい...
-
C# 「データが失なわれる可能性...
-
VC#2008自作クラスメソッドツー...
-
Commons-Discovery.jarとは?
-
Java難しすぎ
-
「IOException は対応する try ...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
C#で設定時刻到来時にイベント...
-
インスタンス参照でアクセスで...
-
VB.NET getとsetの概念がわかり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
interface,extend,implementの...
-
C# 「データが失なわれる可能性...
-
「ラッパークラス」の存在意義...
-
c++でのヘッダーファイルの循環...
-
(vba)他のアプリケーションの右...
-
JavaでのAPIの覚え方ってみさな...
-
ゲッターを使わないで変数にア...
-
「IOException は対応する try ...
-
「継承されたメソッドの可視性...
-
Javaで下線
-
Javaのインスタンス化の構文の...
-
VB DLLプロジェクトについて
-
【C#】クラスのコンストラクタ...
-
ASP.NETでの共通コードの書き方...
-
委譲って何ですか?
-
オーバーライドとラッパーの違い
-
抽象クラスをJUNITでテストする...
-
JTextFieldの入力制限
-
Commons-Discovery.jarとは?
-
setTextについて
おすすめ情報