This();

5 respostas
javahunter
Estou pegando bastante exemplo na net de como usar o this, achei esse que ta meio estranho:
public class Funcionario {
    private String nome;
    private int ID;
    private double salario;
    
    public Funcionario( String nome, int ID, double salario){
        this();
	System.out.println(this);

        this.nome = nome;
        this.ID = ID;
        this.salario = salario;
    }

    
    public String toString(){
		return "Foi usado : System.out.println(this)";
    }

    public void exibir(){
        System.out.printf("O funcionário %s, de número %d recebe %.2f por mês", this.nome,this.ID,this.salario);

	}
}
public class thisMetodo{
    
    public static void main(String[] args){
        String nome = "Neil Peart";
        int ID=2112; 
        double salario = 1000000;
        
        Funcionario chefe = new Funcionario(nome, ID, salario);
        
        chefe.exibir();
        }

}
quando compilo dispara essa mensagem:

C:\>javac thisMetodo.java
.\Funcionario.java:7: error: constructor Funcionario in class Funcionario cannot
be applied to given types;
this();
^
required: String,int,double
found: no arguments
reason: actual and formal argument lists differ in length
1 error

alguem pode ajudar com isso

5 Respostas

guilherme.dio

Você tem duas opções para resolver isso:

1 - Crie o default constructor na classe Funcionario:

public Funcionario(){ }

2 - Remova o this do construtor alternativo da classe Funcionario:

public Funcionario( String nome, int ID, double salario){  
    System.out.println(this);  
        this.nome = nome;  
        this.ID = ID;  
        this.salario = salario;  
    }

E no método executável da classe Main, altere o valor da variável salario para o seguinte:

double salario = 1000000L;
lina

Oi,

Está tentando usar um construtor (sem parâmetros) que não existe.

Tchauzin!

javahunter

guilherme.dio:
Você tem duas opções para resolver isso:

1 - Crie o default constructor na classe Funcionario:

public Funcionario(){ }

2 - Remova o this do construtor alternativo da classe Funcionario:

public Funcionario( String nome, int ID, double salario){  
    System.out.println(this);  
        this.nome = nome;  
        this.ID = ID;  
        this.salario = salario;  
    }

E no método executável da classe Main, altere o valor da variável salario para o seguinte:

double salario = 1000000L;

Do primeiro jeito a mensagem é essa:

C:>javac thisMetodo.java
.\Funcionario.java:6: error: recursive constructor invocation
public Funcionario( /String nome, int ID, double salario/){
^
1 error

do segundo jeito funciona… pode dizer o que esse this(); faz nesse caso ou era pra fazer?

lina

Oi,

This é usado para fazer auto-referência. Resumidamente, this sempre será a própria classe ou o objeto já instanciado.

Quando você faz o uso this(), significa que você está chamando o construtor padrão da classe, ou seja, um construtor vazio (sem parâmetros).

Tchauzin!

javahunter

Entendido =)

abraço lina

Criado 30 de janeiro de 2013
Ultima resposta 30 de jan. de 2013
Respostas 5
Participantes 3