Ci sono parecchie regolette relative ai costruttori. Tra queste vi è quella che un costruttore deve sempre e comunque iniziare esclusivamente o con un super() o con un this().
Anche quando ad esempio fai:
codice:
class XYZ
{
public XYZ ()
{
System.out.println ("ciao");
}
}
La chiamata a super() c'è lo stesso ..... viene infatti inserita dal compilatore!
In ogni caso, anche se usi this(), prima o poi dovrà esser fatta una super().
Torniamo al tuo problema:
codice:
public User() { //costruttore con 0 argomenti
String nome,pass;
// leggo nome e pass
this(nome,pass); //in questo punto vorrei chiamare il costruttore con 2 argomenti per completare l'istanza
}
Tu leggi nome e pass da dove??? Presumo dallo standard input, inserito dall'utente .....
Premetto che un "design" del genere non è certamente molto bello, comunque c'è un'altra regoletta relativa ai costruttori: fino a quando il super-costruttore non è stato eseguito, il "this" non è utilizzabile nella classe. Ciò significa che fino a quando il super() non è stato eseguito, non puoi usare metodi/variabili di istanza ...... però puoi usare metodi/variabili statici!!
Ecco un esempio:
codice:
import java.util.*;
public class Prova
{
private String nome;
public Prova ()
{
this (inputNome ());
}
public Prova (String nome)
{
this.nome = nome;
}
private static String inputNome ()
{
Scanner sc = new Scanner (System.in);
System.out.print ("Nome: ");
return sc.nextLine ();
}
public static void main (String[] args)
{
Prova p = new Prova ();
}
}
Nota che inputNome() è static, perciò lo puoi chiamare mentre passi il parametro a this().
Se una tale soluzione sia un design valido o meno ..... non lo so, non sono un "guru" di Java. Però dal mio punto di vista, fa schifo ....