Je viens de commencer à apprendre Java et j'ai écrit une classe à tester avec des champs statiques. Tout fonctionne bien, mais dans Eclipse, je vois une icône qui, lorsqu'elle est planée en vient comme suit: "La méthode statique getcounter du type Carcounter devrait être Voici la classe: p> et voici où j'essaie d'accéder à un compteur variable: P> public class CarCounterTest {
public static void main( String args[] ){
CarCounter a = new CarCounter();
System.out.println(a.getCounter()); //This is where the icon is marked
}
}
6 Réponses :
Ce serait:
System.out.println(CarCounter.getCounter());
Les champs statiques et les méthodes n'appartiennent pas à un objet spécifique, mais à une classe, vous devez donc les accéder à partir de la classe, et non à partir d'un objet: et non p>
remplacer besoin i> par devrait i> car les deux lignes de code sont correctes mais que la seconde est découragée
Cela a répondu pour moi; Votre réponse était courte en même temps concise. Incroyable!
@BinyAMIN SHARET Je sais que c'était une question plus ancienne mais votre commentaire m'a aidé à travers mon projet. Merci!
Utiliser Voici un Exemple de la raison pour laquelle il est vraiment important: p> Qu'est-ce que c'est look em> comme ce code fait? On dirait qu'il commence à démarrer un nouveau fil, puis de "faire une pause" en quelque sorte - l'envoyer à dormir pendant une seconde. P> En fait, il commence un nouveau fil et faisant la pause de la actuelle em> Fil, car Fondamentalement, la capacité du premier extrait de code à compiler est une erreur de la part des concepteurs de langue: ( P > p> carcounter.getcounter () code>. Cela indique clairement que ce n'est rien à voir avec l'objet que la valeur de la variable code> code> fait référence à - le compteur est associé au type lui-même, plutôt que n'importe quelle instance spécifique du type.
thread.sleep code> est une méthode statique qui toujours em> rend le fil de sommeil actuel. Il ne peut pas em> faire du dormir d'autre fil. C'est beaucoup plus clair lorsqu'il est explicite: p>
C # Designers a corrigé cette erreur.
Les éléments statiques appartiennent à la classe. Par conséquent, le meilleur moyen d'y accéder est via la classe. Donc, dans votre cas, l'impression devrait être.
// CarCounterTest.java public class CarCounterTest { public static void main( String args[] ){ VehicleCounter vehicle1 = new VehicleCounter(); VehicleCounter vehicle2 = new CarCounter(); System.out.println(VehicleCounter.getCounter()); System.out.println(CarCounter .getCounter()); } }
Il est même possible, bien que très découragé, d'écrire:
Math m = null; double d = m.sin(m.PI/4.0); System.out.println("This should be close to 0.5 " + (d*d));
Les membres statiques doivent être accessibles de manière statique, c'est-à-dire de classer.Membername. L'accès non statique est autorisé mais (objectename.membername) mais est découragé. P>