Utiliser un acceseur

Résolu
matrix124 Messages postés 136 Statut Membre -  
matrix124 Messages postés 136 Statut Membre -
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 19031 Statut Modérateur 3 020
 
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 136 Statut Membre 57
 
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