首頁 > Java > java教程 > 主體

為什麼在版本 16 之前的 Java 中不能在非靜態內部類別中定義靜態方法?

Patricia Arquette
發布: 2024-10-28 04:43:30
原創
803 人瀏覽過

Why Can't You Define a Static Method in a Non-Static Inner Class in Java Prior to Version 16?

Java 16 之前的非靜態內部類別中的靜態方法

問題

在Java 16 之前的版本中,嘗試定義靜態方法非靜態內部類別中會導致編譯器錯誤。例如,以下程式碼片段將失敗:

<code class="java">public class Foo {
    class Bar {
        static void method() {} // Compiler error
    }
}</code>
登入後複製

解釋

非靜態內部類別與其封閉類別的實例相關聯。內部類別的每個實例都有對其封閉類別實例的隱藏引用。這意味著內部類別中的靜態方法必須維護對封閉類別的引用,這違反了принцип изоляциии интерфейса.

解決方案

要在內部類別中定義靜態方法,您必須將內部類別聲明為靜態。靜態內部類別沒有對其封閉類別的實例的隱式引用。因此,它可以定義靜態方法:

<code class="java">public class Foo {
    static class Bar { // now static
        static void method() {}
    }
}</code>
登入後複製

以上是為什麼在版本 16 之前的 Java 中不能在非靜態內部類別中定義靜態方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板