9

我想知道这是什么意思?

public Settings() {
    this(null);
}

上面的代码是一个“设置”类的构造函数。this(null) 在这里是什么意思?

4

8 回答 8

15
public Settings() {
    this(null); //this is calling the next constructor
}
public Settings(Object o) {
//  this one
}

这通常用于传递默认值,因此您可以决定使用一个构造函数或另一个..

public Person() {
    this("Name"); 
}
public Person(String name) {
    this(name,20)
}
public Person(String name, int age) {
    //...
}
于 2012-05-18T18:27:45.960 回答
10

这意味着您正在调用一个重载的构造函数,该构造函数采用Object某种形式,但您不传递对象,而是传递一个普通的null.

于 2012-05-18T18:27:19.770 回答
5

它是一个构造函数,它调用同一个类中的另一个构造函数。

你大概有这样的事情:

public class Settings {
    public Settings() {
        this(null);  // <-- This is calling the constructor below
    }

    public Settings(object someValue) {
    }
}

通常使用这种模式,以便您可以提供具有较少参数的构造函数(以方便调用者使用),但仍将逻辑包含在一个位置(被调用的构造函数)。

于 2012-05-18T18:27:04.193 回答
4

它在 Settings 类中调用不同的构造函数。寻找另一个接受单个参数的构造函数。

于 2012-05-18T18:27:18.610 回答
1

它调用默认构造函数传递 null 作为参数...

于 2012-05-18T18:27:39.767 回答
1

尝试阅读Java中的重载构造函数,然后调用只有一个参数的构造函数..

.

    public Settings() {
        this(null);
    }

   public Settings(Object obj){

}   
于 2012-05-18T18:30:24.397 回答
1

Constructor ChainingJava. 通过这个调用,您实际上调用了类对象的重载构造函数。例如

class Employee extends Person {
    public Employee() {
        this("2")  //Invoke Employee's overloaded constructor";
    }

    public Employee(String s) {
        System.out.println(s);
    }
}
于 2012-05-18T18:50:25.010 回答
0

这基本上调用了与提到的每个相同的类中的另一个参数化构造函数。

这里要注意一件事,如果没有可用的参数化构造函数,它将产生错误。

我不认为将 this() 传递给 null 值。但问某人可能是一个棘手的问题。:)

于 2016-03-01T20:59:39.353 回答