簡體   English   中英

防止實例化和繼承Java類

[英]Preventing a Java class from being instantiated and inherited

我被要求修改一個簡單的類,以使其無法實例化和繼承。 我對於如何使用abstract而不被實例化以及final而不被繼承感到困惑。

我應該怎么寫這樣的課?

提前致謝。

一個類不能同時是final和abstract。 您可以通過隱藏構造函數來防止實例化,並引發異常以防止通過反射進行實例化。

看起來像這樣:

final class MyClass {
    private MyClass() {
        throw new IllegalStateException("Cannot be instantiated"); //some exception
    }
}
// final can not be inherited
// only static methods will work on this class
final class FrozenClass {
  private FrozenClass() {
    // can not be instantiated
  }
}

因此,您必須將類定型並添加一個私有構造函數:請看以下示例:

final class  uninstantiable {
    private uninstantiable() {
    }
}

因此,現在每當您嘗試實例化新對象時,它將err classnamepackagename具有私有訪問權

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM