2010-07-24 2 views
5

J'écris une classe pour représenter une matrice. Je veux qu'il ressemble quelque chose comme ceci:Puis-je surcharger des variables en 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 
} 

Est-ce code juridique, ou devrais-je avoir des noms de variables en fonction des types de données que leur matrice détient?

+1

une raison pour laquelle vous n'avez pas utilisé le compilateur trouver? – EJP

Répondre

11

Vous ne pouvez pas surcharger des variables. Avec votre approche, vous devez leur donner un nom différent, puis surcharger la méthode getMatrix pour différents types.

Une meilleure approche consiste à utiliser Java Generics:

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

puis créer des objets de tout type que vous voulez: Matrix<Integer>, Matrix<Double>, etc.

+0

Merci, cela m'évite d'avoir à faire un million de constructeurs et de méthodes différents. Aussi, muy elegante! –

1

Je pense que vous cherchez Java Generics, une fonctionnalité standard de Java depuis Java 5.

L'idée est que vous auriez classe générique Matrix qui peut être spécialisé pour tout type dont vous avez besoin.

Il y a beaucoup de tutoriels, par exemple: here

+1

S'il vous plaît poster des commentaires en tant que commentaires plutôt que des réponses. – danben

1

Ce que vous avez indiqué est pas de code juridique Java. L'approche que vous suggérez (différents noms) fonctionnerait, ou vous pourriez tirer parti du système objet de Java, et utiliser des valeurs encadrées (telles que le membre de la classe n'est qu'un objet) ou des génériques, de sorte que le type est un paramètre.