Java靜態類

來源:互聯網
上載者:User

標籤:color   back   public   靜態   實現   www.   html   多個參數   個人   

 

  在Java世界裡,經常被提到靜態這個概念,static作為靜態成員變數和成員函數的修飾符,意味著它為該類的所有執行個體所共用,也就是說當某個類的執行個體修改了該靜態成員變數,其修改值為該類的其它所有執行個體所見。最近一個項目裡頻繁用到static修飾的內部類,再讀了一下《Effective Java》才明白為什麼會用static來修飾一個內部類也就是本文的中心——靜態類。

  如果一個類要被聲明為static的,只有一種情況,就是靜態內部類。如果在外部類聲明為static,程式會編譯都不會過。在一番調查後個人總結出了3點關於內部類和靜態內部類(俗稱:內嵌類)

1.靜態內部類跟靜態方法一樣,只能訪問靜態成員變數和方法,不能訪問非靜態方法和屬性,但是普通內部類可以訪問任意外部類的成員變數和方法

 

2.靜態內部類可以聲明普通成員變數和方法,而普通內部類不能聲明static成員變數和方法。

 

3.靜態內部類可以單獨初始化: 

Inner i = new Outer.Inner();

 普通內部類初始化:

Outer o = new Outer();Inner i = o.new Inner();

 

  靜態內部類使用情境一般是當外部類需要使用內部類,而內部類無需外部類資源,並且內部類可以單獨建立的時候會考慮採用靜態內部類的設計,在知道如何初始化靜態內部類,在《Effective Java》第二章所描述的靜態內部類builder闡述了如何使用靜態內部類:

 
public class Outer {    private String name;    private int age;    public static class Builder {        private String name;        private int age;        public Builder(int age) {            this.age = age;        }        public Builder withName(String name) {            this.name = name;            return this;        }        public Builder withAge(int age) {            this.age = age;            return this;        }        public Outer build() {            return new Outer(this);        }    }    private Outer(Builder b) {        this.age = b.age;        this.name = b.name;    }}
 

靜態內部類調用外部類的建構函式,來構造外部類,由於靜態內部類可以被單獨初始化說有在外部就有以下實現:

public Outer getOuter(){    Outer outer = new Outer.Builder(2).withName("Yang Liu").build();    return outer;}

 

對於靜態類總結是:1.如果類的構造器或靜態工廠中有多個參數,設計這樣類時,最好使用Builder模式,特別是當大多數參數都是可選的時候。

                               2.如果現在不能確定參數的個數,最好一開始就使用構建器即Builder模式。

 轉自:https://www.cnblogs.com/Alex--Yang/p/3386863.html

Java靜態類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.