Perché alcune classi o metodi non sono "parametri obbligatori" in java [closed]

0

Il titolo della domanda può essere un po 'confuso, ma non avevo un modo migliore per dirlo.

In Java puoi avere questo:

JLabel HoHoHo = new JLabel();
...
HoHoHo.setText("Ho Ho Ho");

E questo:

JLabel HoHoHo = new JLabel("Ho Ho Ho");

In entrambi i casi, dà un'etichetta con Ho Ho Ho su di essa.

Domanda

Come è possibile? Voglio dire, ci sono delle classi JLabel, una con un parametro String e una senza?

    
posta DLJ 23.12.2013 - 16:08
fonte

2 risposte

7

No ci sono 2 costruttori per la classe stessa . Quello senza parametro imposta semplicemente la stringa su un valore predefinito (la stringa vuota).

Un modo per farlo sarebbe:

public class JLabel extends JComponent{

    private text;

    public JLabel(){
        this("");
    }

    public JLabel(String text){
        this.text=text;
    }
}
    
risposta data 23.12.2013 - 16:11
fonte
2

Questo JLabel di openjdk mostra che vengono utilizzati costruttori sovraccaricati.

JLabel() : void
JLabel(String) : void
JLabel(Icon) : void
JLabel(Icon, int) : void
JLabel(String, int) : void
JLabel(String, Icon, int) : void

Vengono fornite diverse forme del costruttore in modo da non dover gestire la normale convalida. Incase solo un singolo costruttore con diversi parametri è stato fornito dall'API, ad es. JLabel(String, Icon, int) : void dovresti,

  • Controlla il numero di input
  • Verifica se sono sintatticamente corretti

etc

    
risposta data 23.12.2013 - 16:21
fonte

Leggi altre domande sui tag