2012-05-18 11 views
6

Quiero saber qué significa esto?java this (null)

public Settings() { 
    this(null); 
} 

El código anterior es el constructor de una clase "Configuración". ¿Qué significa esto (null) aquí?

+0

Necesita más contexto. ¿Eso está en una definición de clase? –

+1

posible duplicado de [¿qué tipo de constructores de java son estos? ¿Cadena de constructor?] (Http://stackoverflow.com/questions/9204560/what-type-of-java-constructors-are-these-constructor-chaining) –

+0

posible duplicado de [¿Cómo puedo llamar a un constructor de otro en Java? ?] (http://stackoverflow.com/questions/285177/how-do-i-call-one-constructor-from-another-in-java) –

Respuesta

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

Esto a menudo se utiliza para pasar valores por defecto para que pueda decidir utilizar un constructor u otra ..

public Person() { 
    this("Name"); 
} 
public Person(String name) { 
    this(name,20) 
} 
public Person(String name, int age) { 
    //... 
} 
+0

gracias. ¡Ejemplo realmente ayudó! –

+0

de nada (: – porfiriopartida

4

Es un constructor que llama a otro constructor de la misma clase.

Usted probablemente tenga algo como esto:

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

    public Settings(object someValue) { 
    } 
} 

A menudo, este patrón se utiliza para que pueda ofrecer un constructor con un menor número de parámetros (para facilitar su uso por las personas que llaman), pero aún así mantener la lógica contenida en una lugar (el constructor que se llama).

4

Llama a un constructor diferente dentro de la clase de Configuraciones. Busque otro constructor que acepte un solo parámetro.

10

Esto significa que usted está llamando a un constructor sobrecargado que toma un Object de algún tipo, pero no pasa un objeto, sino una llanura null.

+0

Podría estar llamando a un constructor heredado, o se vería diferente ? – ametren

+2

No, no puede @ametren, si quieres hacer eso tienes que hacerlo con 'super (esto)' –

+0

, así puedes llamar al constructor padre con super, si Settings amplía una clase que recibe String como argumento, puedes usar super ("somestring") – porfiriopartida

1

Se llama al constructor por defecto pasar null como argumento ...

1

Intenta leer el constructor sobrecargado en java y llamas al constructor que tiene un solo parámetro ..

.

public Settings() { 
     this(null); 
    } 

    public Settings(Object obj){ 

} 
1

Esto se llama Constructor Chaining en Java. Mediante esta llamada, en realidad invocas al constructor sobrecargado de tu objeto de clase. Por ejemplo

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

    public Employee(String s) { 
     System.out.println(s); 
    } 
} 
0

Esto básicamente llama a otro constructor parametrizado en la misma clase que todos los mencionados.

Una cosa a tener en cuenta aquí, producirá un error, si no hay un constructor con parámetros disponible.

No hago ningún uso de pasar esto() con valor nulo. Pero puede ser una pregunta difícil de hacerle a alguien. :)

Cuestiones relacionadas