2

关于以下类定义:

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.

4

4 回答 4

3

this指您的代码在其中运行的实例/对象。

this.defaultFiledefaultFile引用类的实例变量ConfigComparer

defaultFile引用传递给构造函数的变量。

如果this未指定,它总是在实例变量之前查找局部变量。

于 2013-09-06T15:36:14.410 回答
0

在实例方法或构造函数中,this 是对当前对象的引用——调用其方法或构造函数的对象。您可以在实例方法中引用当前对象的任何成员,也可以constructor使用this.

从构造函数中,this关键字调用constructor同一类中的另一个。这样做称为显式构造函数调用。

来源:http ://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html

于 2013-09-06T15:39:32.423 回答
0

根据链接thisWithin an instance method or a constructor, this is a reference to the current object

您的代码构造函数可以在没有this关键字 like的情况下编写

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

于 2013-09-06T15:52:10.383 回答
0

类定义应该是这样的:

public final class ConfigComparer {

    private String defaultFile;

    private String siteFile;

    ...some code ....
}

而且,在构造函数中,您将参数分配(String defaultFile, String siteFile)给这些属性。请注意,如果属性有不同的名称,这不是必需的,但在这种情况下它是必需的,如果不是,那么您将为参数分配相同的值。

于 2013-09-06T15:47:01.057 回答