2010-07-24 13 views
5

Sto scrivendo una classe per rappresentare una matrice. Voglio farlo sembrare qualcosa di simile:Posso sovraccaricare variabili in Java?

public class matrix { 
    private int[][] matrix; 
    private double[][] matrix; 
    //And so on and so forth so that the user can enter any primitive type and 
    //get a matrix of it 
} 

È questo codice legale, o dovrei avere diversi nomi di variabile in base ai tipi di dati che la loro matrice tiene?

+1

qualche ragione per cui non è stato utilizzato il compilatore di scoprire? – EJP

risposta

11

Non è possibile sovraccaricare le variabili. Con il tuo approccio, dovresti dare loro un nome diverso, quindi sovraccaricare il metodo getMatrix per diversi tipi.

Un approccio migliore è quello di utilizzare Java Generics:

public class Matrix<T> { 
    private T[][] matrix; 
    public T getMatrix() {return matrix;} 
    ... 
} 

e quindi creare oggetti di qualunque tipo che volete: Matrix<Integer>, Matrix<Double>, ecc

+0

Grazie, questo mi evita di dover creare milioni di costruttori e metodi diversi. Inoltre, muy elegante! –

1

Penso che si sta cercando Java Generics, una caratteristica standard di Java dal Java 5.

L'idea è che si avrebbe classe Matrix generica che può essere specializzato per qualsiasi tipo è necessario.

ci sono un sacco di tutorial, per esempio: here

+1

Si prega di inviare commenti come commenti piuttosto che risposte. – danben

1

Ciò che avete dimostrato non è codice Java legale. L'approccio che suggerisci (nomi diversi) potrebbe funzionare, oppure potresti sfruttare il sistema di oggetti Java e usare valori in box (in modo che il membro della classe sia solo un oggetto) o generici, in modo tale che il tipo sia un parametro.

Problemi correlati