2015-07-03 128 views
-2

我正在學習辛格爾頓和我碰到下面的代碼塊如果返回類型是靜態也該方法是靜態的

public class School { 
private static School school; 
private ArrayList<String> teachers; 
private School(){ 
    teachers = new ArrayList<>(); 
    teachers.add("adam"); 
    teachers.add("john"); 
    teachers.add("jackson"); 
    teachers.add("jason"); 
} 
public static School getInstance(){ 
    if (school==null) 
     school=new School(); 
    return school; 
} 
public String getTeacher(){ 
    if (!(teachers.size() ==0)) 
     return teachers.remove(0); 
    return "no teachers left"; 
} 

}

正如你所看到的getInstance來了()方法是靜態的。我在流浪爲什麼?

在此先感謝您的幫助:)

我知道的返回類型不是靜態的字面意思。這裏的返回類型是School。在Singleton中,必須使用它自己的類的靜態變量來創建它的一個實例,我可以獲得該部分並且非常合理。但我的問題是,爲什麼設置靜態變量的方法也必須是Static?就是那個問題。

+1

您認爲_return type是static_是什麼意思?你爲什麼這麼認爲? –

回答

1

因爲這是一個Singleton的點,整個程序的一個實例。

如果它不是靜態的,你必須使用Singleton類的一個實例來調用getInstance()方法,這是沒有任何意義的。

1

一個常見的設計模式(單身人士)是該類的實例字段的用法。該字段必須是靜態的(以便可以在沒有預先存在的類實例的情況下進行檢索),因此,訪問它的任何方法也必須是靜態的。

+0

謝謝你的回答。其實你是唯一理解我的問題的人。歡呼聲 – JamJam

相關問題