Re: Command line arguments passed to main: how do I access them from other classes? ...
On 24 Maj, 11:53, donkeyboy <fivenastydi...@hotmail.com> wrote:
Hi all,
I'm trying to *adapt* a simulation I found, by passing command line
arguments to the simulation to change the behaviour of the simulation,
instead of manually changing the code by hand each time I want to
change the simulation parameters.
The simulation has 4 classes involved from what I can tell: the main
class, which calls a simulation setup class (which sets up the 3d
environment), that calls a mammal behaviour class, that in turn
extends an animal behaviour class. (I appreciate extends is no longer
used -- old simulation obviously!) Now I need to get the arguments out
of the main class and into either the mammal or animal behvaour class
-- any suggestions?
If I pass the arguments, they need to go through the simulation setup,
and in turn into the behaviour class, which seems messy. Can I set the
arguments I'm interested in as constants in main (do global variables
exist in Java?) and access them from the behaviour class?
Or can I create some kind of a getArgumentValue method in main, which
the later classes can access? And if so, how do you reference the
object created through the main method?
Hope this helps -- let me know if more info. is req'd!! Needless to
say, I'm stumped, so any help you can provide would be of *great*
help!
Cheers,
Ron
Firstly, if you're unwilling to pass the parameters out via method
calls from main(), then one way to achieve your aim is to save the
parameters to a field variable in the main(), so that they can be
accessed later; something like:
public class Test {
public static String[] args = null;
public static void main(String[] args) {
this.args = args;
}
}
Then any other class can access them via:
String[] args = Main.args;
But this is walking all over encapsulation in size tens.
Slightly better is having the arguments saved privately in Main and
accessed via accessor the method:
public class Test {
private String[] args = null;
public static void main(String[] args) {
this.args = args;
}
public static String[] getArgs() {
return args;
}
}
Next, you could, instead, export the args from the main() method into
a dedicated singleton called, for example, SystemParameters, which
would store the args[] and offer them for retrieval via accessor
method.
There are other ways, but for a four-class example, something of the
above should suffice.
..ed
--
www.EdmundKirwan.com - Home of The Fractal Class Composition