Kategorie szkoleń | Egzaminy | Kontakt
  • 3
  • 2
  • 2.8K

Przenosząc kod z C++, potrzebuję zdefiniować zmienne, które będą przechowywać stan aplikacji. Z informacji zaciągniętych usłyszałem, że w JAVIE nie ma zmiennych globalnych w takim przypadku. Jak takie zadanie zrealizować?

Pawel_Bakowski
  • Zapytał
  • @ Pawel_Bakowski | 28.04.2014

Odpowiedzi (3)

  • 0

Ja używałem zmiennych statystycznych.

Tomasz_Myszkowski_FO03
  • Odpowiedział
  • @ Tomasz_Myszkowski_FO03 | 28.04.2014
    • 7
    • 0
    • 3
  • 4

Faktycznie. Można zdefiniować klasę, w której znajdą się publiczne pola statyczne. Pełnią one rolę zmiennych globalnych. Jeśli dodatkowo zadeklarujemy je jako final, to uzyskamy stałe globalne. Przykładowo:

 

package pl.altkom.defs;
public class Global {

  // stałe
  public static final int COLS = 4;
  public static final float MAX = 12.0f;

  // zmienne
  public static int counter;
  public static double currentMax;

}

 

Do takich zmiennych można odwołać się poprzez nazwę klasy z dowolnego miejsca programu:

 

import pl.altkom.defs;

public class OtherClass {
  private int x = Global.counter;
  ...
}

 


lub bez jawnego poprzedzania nazwą klasy, o ile zastosujemy import statyczny (od JSE 5):

 

import static pl.altkom.defs.*;

public class OtherClass {
  private int x = counter;
  ...
}

 

  • Odpowiedział
  • @ | 29.04.2014
  • TRENER MODERATOR ALTKOM AKADEMII
  • 0

Jeśli chodzi o stałe globalne (a propos powyższej odpowiedzi), to:


1. Można je definiować w interfejsie np.:


public interface Consts
{
int CONST1 = 100;
String CONST2 = "string";


Tego typu konstrukcja powoduje oznaczenie implicite CONST1 i CONST2 jako public static final.


2. W przypadku typów nieprymitywnych - stałe są tylko referencje, co oznacza, że możesz modyfikować stan stałej, nie możesz natomiast przypisać do niej innej referencji. 

Przemysław_Kromołowski
  • Odpowiedział
  • @ Przemysław_Kromołowski | 27.05.2014
    • 1
    • 1
    • 3