[解決済み] インターフェイスメソッドはボディを持つことができますか?
2023-07-10 05:43:51
質問
インターフェースは100%純粋な抽象クラスのようなものだということは知っています。したがって、その中にメソッドの実装を持つことはできません。しかし、私は奇妙なコードを見ました。誰か説明できますか?
コードスニペットです。
interface Whoa {
public static void doStuff() {
System.out.println("This is not default implementation");
}
}
EDITです。
私のIDEはIntellij Idea 13.1です。プロジェクトSDKは、java 7 <1.7.0_25> です。IDEでは、コンパイラーエラーは表示されません。しかし、コマンドラインでコードをコンパイルすると、次のメッセージが表示されます。
Whoa.java:2: error: modifier static not allowed here public static void doStuff() { ^
どのように解決するのですか?
から Java 8 では、デフォルトのメソッドに加え、インターフェイスに静的メソッドを定義することができます。
-
静的メソッドは、任意のオブジェクトではなく、それが定義されているクラスに関連付けられているメソッドです。クラスのすべてのインスタンスはその静的メソッドを共有します。
-
これにより、ライブラリ内のヘルパーメソッドを整理しやすくなります。あるインターフェースに固有の静的メソッドを、別のクラスではなく同じインターフェース内に保持することができるのです。
-
を取得する静的メソッドを定義しています。
ZoneId
オブジェクトを取得する静的メソッドを定義しています。ZoneId
オブジェクトがない場合は、システムのデフォルトのタイムゾーンを使用します。(その結果、メソッドを単純化することができます。getZonedDateTime
)
以下はコードです。
public interface TimeClient {
// ...
static public ZoneId getZoneId (String zoneString) {
try {
return ZoneId.of(zoneString);
} catch (DateTimeException e) {
System.err.println("Invalid time zone: " + zoneString +"; using default time zone instead.");
return ZoneId.systemDefault();
}
}
default public ZonedDateTime getZonedDateTime(String zoneString) {
return ZonedDateTime.of(getLocalDateTime(), getZoneId(zoneString));
}
}
こちらもご覧ください
-
Java 8 のすべての興味深い事柄については Java 8 に関するすべてのこと
関連
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] なぜJavaにはtransientフィールドがあるのですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] いつ使うか。Java 8+のインターフェイスのデフォルトメソッドと、抽象的なメソッドの比較
-
[解決済み] Javaインターフェースでスタティックメソッドを定義できないのはなぜですか?
-
[解決済み】「インターフェースに合わせたプログラム」とはどういう意味ですか?
-
[解決済み] なぜインターフェイスで静的メソッドを宣言してはいけないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
Junitのユニットテストエラー
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
eclipse 実行 Java、エラー: 選択を起動できず、レシーバーもありません。
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
IDEAError:javaの依存性エラー。Annotation processing is not supported for module cycles...(アノテーション処理はモジュールサイクルではサポートされていません。
-
[解決済み] Javaで関数をパラメータとして渡すには?[重複しています]。