Utiliser un acceseur

Résolu/Fermé
matrix124 Messages postés 91 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 12 décembre 2013 - 4 mai 2013 à 22:11
matrix124 Messages postés 91 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 12 décembre 2013 - 5 mai 2013 à 01:04
Bonjour j'aimerais pouvoir récupérer ma variable time pour pouvoir l'utiliser dans une autre classe mais je ne sais pas comment faire. Voilà mon code android en question:
public class MainActivity extends Activity {
    
public int time = 0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		mView = new MainSurfaceView(this);
        setContentView(mView);
	
       Timer t = new Timer();

       t.scheduleAtFixedRate(new TimerTask() {

			@Override
			public void run() {
				runOnUiThread(new Runnable() {

					@Override
					public void run() {
						time = time++;
						
					}

					
				});
			}
       	
       }, 0, 1000);
       
      
     
	}
}

Merci pour votre aide

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
4 mai 2013 à 23:49
time est un attribut public, donc il te suffit d'avoir un objet MainActivity pour accéder à cette valeur time.

MainActivity ma = ...
int t = ma.time;

Remarque : en général ce genre de code est à éviter, parce que rien ne nous empêche du coup de faire n'importe quoi avec "time", exemple :

ma.time = -42;
Ton code ne fonctionnera probablement plus correctement après une telle modification ! C'est pour ça qu'il vaut mieux encapsuler les données, c'est à dire déclarer "time" private et donner un accesseur (et éventuellement un mutateur) pour pouvoir y accéder sans risque de mal le modifier.

Exemple :

// dans  MainActivity

private int time = 0;

public int getTime()
{
    return time;
}

public void setTime(int t)
{
    if (t>=0)
        time = t;
}

// ailleurs

MainActivity ma = ...
int t = ma.getTime();
ma.setTime(-42); // sans effet car interdit
1
matrix124 Messages postés 91 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 12 décembre 2013 56
5 mai 2013 à 01:04
Merci beaucoup pour cette réponse rapide et très complète. En effet étant débutant j'ai encore quelques difficultés avec le java et je vais suivre tes conseils.
Sujet résolu :)
0