[JAVA] Accès attribut à différentes classes

Résolu/Fermé
Anonyme - 25 avril 2012 à 10:15
 Anonyme - 25 avril 2012 à 12:08
Bonjour,

Je rencontre un problème au niveau de l'accès à un même attribut depuis différentes classes.
Je vous explique : j'ai créé une classe Path qui contient des attributs static correspondant à des noms de fichiers. Depuis une classe classe1 et une classe classe2 situées dans deux .java différents, j'aimerais pouvoir accéder à l'attribut Path contenant le nom de fichier qui m'intéresse, préalablement modifié dans le code de l'une des deux classes.
Par exemple, depuis la classe1 je modifie l'attribut de Path pour qu'il contienne "D:\toto". Si je crée plusieurs instances de Path dans classe1, l'attribut est identique (puisque déclaré en static), mais si j'essaye d'y accéder depuis une instance Path dans classe2, alors je retrouve seulement la valeur par défaut de ma classe et non pas la valeur modifiée dans classe1.
J'ai songé à créer un fichier texte dans lequel j'écrirais les différents noms de fichiers, mais j'aurais préféré passer par une classe (meilleure manipulation de mes noms de fichiers). Est-ce possible où est-ce que je dois recourir à ma deuxième solution ?

Merci !
A voir également:

3 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
25 avril 2012 à 10:26
Il faudrait voir ton code pour savoir pourquoi ça ne fait pas ce que tu veux, mais lorsque l'on veut passer d'une classe à une autre comme ça, il faut aussi prendre en compte l'encapsulation des attributs.
0
Dans Path.java :

public class Path
{
private static String directoryPath;

public Path ()
{
directoryPath = "D:\\Documents\\";
}

public String getDirectoryPath ()
{
return directoryPath;
}

public void setDirectoryPath (String s)
{
directoryPath = s;
}
}


Dans classe1.java :

// reste du code

Path p = new Path();
p.setDirectoryPath("D:\\Documents\\toto");


Dans classe2.java :

// Reste du code

Path p = new Path();

System.out.println(p.getDirectoryPath());




Je me rends compte avec du recul que cela vient du fait que j'appelle à nouveau le constructeur de Path et qu'il me remet ma valeur par défaut, mais comment faire autrement ?

Merci.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
25 avril 2012 à 11:18
Par définition, les valeurs static ne dépendent d'aucun objet, ça n'a donc pas de sens de les initialiser dans des constructeurs, ou d'utiliser un objet pour appeler les méthodes !

public class Path 
{ 
	private static String directoryPath = "D:\\Documents\\";
	
	public static String getDirectoryPath() 
	{ 
		return directoryPath; 
	} 

	public static void setDirectoryPath(String s) 
	{
		directoryPath = s; 
	}
} 

public class Classe1
{
	// ...
	Path.setDirectoryPath("D:\\Documents\\toto");
	// ...
}

public class Classe2
{
	// ...
	System.out.println(Path.getDirectoryPath()); 
	// ...
}
0
Merci !! J'obtiens le traitement que je voulais en mettant les méthodes en static.
0