我在Java中編寫了大約一週的時間,但我仍然在學習它的問題。實例化類的靜態對象
我知道我們可以創建一個類,然後使用類的名稱創建它的實例。
,但我有這樣的代碼這讓我很難理解這裏發生了什麼,
這就是所謂XMLGettersSetters.java文件,
public class XMLGettersSetters {
private ArrayList<String> title = new ArrayList<String>();
private ArrayList<String> artist = new ArrayList<String>();
private ArrayList<String> country = new ArrayList<String>();
private ArrayList<String> company = new ArrayList<String>();
private ArrayList<String> price = new ArrayList<String>();
private ArrayList<String> year = new ArrayList<String>();
public ArrayList<String> getCompany() {
return company;
}
public void setCompany(String company) {
this.company.add(company);
Log.i("This is the company:", company);
}
public ArrayList<String> getPrice() {
return price;
}
public void setPrice(String price) {
this.price.add(price);
Log.i("This is the price:", price);
}
public ArrayList<String> getYear() {
return year;
}
public void setYear(String year) {
this.year.add(year);
Log.i("This is the year:", year);
}
public ArrayList<String> getTitle() {
return title;
}
public void setTitle(String title) {
this.title.add(title);
Log.i("This is the title:", title);
}
public ArrayList<String> getArtist() {
return artist;
}
public void setArtist(String artist) {
this.artist.add(artist);
Log.i("This is the artist:", artist);
}
public ArrayList<String> getCountry() {
return country;
}
public void setCountry(String country) {
this.country.add(country);
Log.i("This is the country:", country);
}
}
現在我可以創建這個類這樣的對象,
XMLGettersSetters myObject = new XMLGettersSetters();
,但是從那裏我學習這個代碼的網站,他們所創建的對象就是這樣,
public static XMLGettersSetters data = null;
該對象是如何聲明爲靜態的?上面的代碼甚至意味着什麼。 難道不應該只是,
XMLGettersSetters data = null;
據我所知,當我們聲明爲靜態的,然後我們需要DONOT實例化一個類中使用靜態變量從該類的變量。
一個問題,
public static XMLGettersSetters getXMLData() {
return data;
}
我不知道在上面的代碼中發生了什麼, 第一個對象實例化的靜態再而不是給對象的名稱,函數給出,而不是它是getXMLData()
。 而返回類型爲data
現在關於下面的代碼,
public static void setXMLData(XMLGettersSetters data) {
XMLHandler.data = data;
}
的方法與XMLGettersSetters
創建對象作爲參數,但怎麼樣XMLHandler.data
? 這是什麼?不應該是this.data
?
他們沒有創建一個對象:
在Java中,你可以在這裏你聲明變量分配在同一個句子中的價值。他們只是將'null'分配給Java中代表「無對象」的變量。稍後,最終,將創建一個實際的對象並通過setter進行分配。順便說一句,這是一個相當糟糕的設計。 – 5gon12eder 2014-10-18 18:09:56
由於'data'是靜態的,它屬於這個類。建議直接從類訪問靜態變量,而不是實例(這是您在調用'this'時訪問當前實例的過程)。另外,該方法是靜態的,不能在靜態方法中使用'this' – 2014-10-18 18:11:29