关于以下类定义:
public final class ConfigComparer {
...some code ....
public ConfigComparer(String defaultFile, String siteFile)
throws NoSuchFieldException, IllegalAccessException {
this.defaultFile = defaultFile;
this.siteFile = siteFile;
defaultConfig = loadConfiguration(defaultFile);
siteConfig = loadConfiguration(siteFile);
load();
}
..... some code ....
}
在构造函数ConfigComparer
中,有this.defaultFile = defaultFile;
和this.siteFile = siteFile;
这两个this.
用于什么或者它们的设计考虑因素是什么?
答案 0 :(得分:3)
this
指代代码在其中运行的实例/对象。
this.defaultFile
引用类defaultFile
的实例变量ConfigComparer
。
defaultFile
引用传递给构造函数的变量。
未指定this
时,它始终在实例变量之前查找局部变量。
答案 1 :(得分:0)
在实例方法或构造函数中,这是对当前对象的引用 - 正在调用其方法或构造函数的对象。您可以使用constructor
在实例方法或this
中引用当前对象的任何成员。
在构造函数中,this
关键字在同一个类中调用另一个constructor
。这样做称为显式构造函数调用。
来源:http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html
答案 2 :(得分:0)
类定义应该是这样的:
public final class ConfigComparer {
private String defaultFile;
private String siteFile;
...some code ....
}
并且,在构造函数中,您将参数(String defaultFile, String siteFile)
分配给这些属性。请注意,如果属性具有不同的名称,则不需要,但在这种情况下,如果不是,则为参数分配相同的值。
答案 3 :(得分:0)
根据link,this
指的是Within an instance method or a constructor, this is a reference to the current object
您的代码构造函数可以不使用this
关键字编写
像
public ConfigComparer(String defaultFile, String siteFile)
throws NoSuchFieldException, IllegalAccessException {
instance_defaultFile = defaultFile;
instance_siteFile = siteFile;
defaultConfig = loadConfiguration(defaultFile);
siteConfig = loadConfiguration(siteFile);
load();
}
在您的构造函数中,关键字this
是必要的,因为您的instance variable
和method parameter
都是相同的,jvm需要知道您所指的是什么,这就是您需要的原因说
this.defaultFile = defaultFile