Re: Global enums and constants
On Wednesday, February 15, 2012 8:31:49 AM UTC-8, Daniel Pitts wrote:
On 2/14/12 3:10 PM, Davej wrote:
On Feb 14, 4:53 pm, Daniel Pitts
<newsgroup.nos...@virtualinfinity.net> wrote:
On 2/14/12 2:37 PM, Davej wrote:
I'm having trouble accessing constants. I know it is always best to
define a constant in only one place, but public or private I still
can't see it. What am I doing wrong? Thanks.
The problem is on line 15 of the example you posted.
In other words, we don't know what you've tried, what error messages y=
ou
see, or what you are really attempting to do. Please provide an SSCCE
<http://sscce.org/> and then we'll be able to help without the use of
clairvoyance.
Well, I had a constant CLASSFILEPATH defined here...
public final String CLASSFILEPATH = "/WEB-INF/ClassList.txt";
That is not exactly a constant. It is an instance field. You're missing=
the static modifier.
Being 'static' is not part of the definition of a Java constant variable.
"We call a variable, of primitive type or type String, that is final and
initialized with a compile-time constant expression (=A715.28) a constant=
variable."
<http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.1=
2.4>
So that is exactly a constant (variable).
The problem is that not being a static variable, the OP must reference it=
through an instance reference, which he did not do.
This should do the trick:
public static final String CLASSFILEPATH = "/WEB-INF/ClassList.txt"=
;
When you add "static", it means there is exactly one CLASSFILEPATH per
Student "class". Without the static it is per Student instance.
So the OP has two choices - reference the constant variable through an
instance, if he keeps it an instance variable, or through the class, if he=
changes it to a static variable.
___________________________________________________
Now note that the first file has an import for the second file. Still
the
constant cannot be seen inside the servlets package. The error is;
error: cannot find symbol
String path = sc.getRealPath(CLASSFILEPATH);
symbol: variable CLASSFILEPATH
location: class CalculateGradesServlet
1 error
Now take Patricia's advice.
--
Lew