I want less methods. I want a common global TestClass from which I could use any of its value inside the class.
import java.util.*;
import java.io.*;
public class TestClass {
TestClass(String hello){
String hallo = hello;
String halloSecond = "Saluto!";
}
public static void main(String[] args) {
TestClass test = new TestClass("Tjena!");
System.out.println("I want "Tjena!": " + test.hallo);
TestClass testSecond = new TestClass("1");
System.out.println("I want Saluto!:" + test.halloSecond);
System.out.println("I want Saluto!:" + testSecond.halloSecond);
// How can I get glob.vars like the "Saluto!"?
}
}
[Clarification Needed] I cannot understand the no-use of GLOB.VARS. Please, see the code belowe where you cannot access the GLOB.VARS without an instance, hence the error. If I quarantee no malicious code can make an instance, is there any problem in using GLOB.vars?
$ javac TestClass.java
TestClass.java:19: non-static variable hallo cannot be referenced from a static context
System.out.println("It did not get to the GLOB.VAR: " + hallo);
^
1 error
$ cat TestClass.java
import java.util.*;
import java.io.*;
public class TestClass {
public String hallo;
public String halloSecond;
TestClass(String hello){
hallo = hello;
halloSecond = "Saluto!";
}
public static void main(String[] args) {
TestClass test = new TestClass("Tjena!");
System.out.println("It did not get to the GLOB.VAR" + hallo);
}
}
I guess you are looking for something like this:
The value of
hallois set in each instance ofTestClass. The value ofhalloSecondis a constant, shared by all instances of the class and visible for the whole app. Note that with this code your IDE/compiler probably gives you a warning upontest.halloSecond– it should be qualified by the class name, likeTestClass.halloSecond, rather than an instance name.Update on global variables: the main problem with global variables is that they make the code
In Java everything is inside a class, so you can’t have “classic” global variables like in C/C++. However, a public static data member is still in fact a global variable.
Note that the code sample above,
halloSecondis a global constant, not a variable (as it is declaredfinaland is immutable), which alleviates much of these problems (except maybe the dependency issue).