我在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