File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes variables in interface Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "variables in interface" Watch "variables in interface" New topic

variables in interface

Angela lewis
Ranch Hand

Joined: Mar 01, 2004
Posts: 100

The follwoing gives an error
identifier expected. //1

That means the class can't see the variable "value1" in the interface.
But if i do

It gives the following error.

cannot assign a value to final variable value1 //2

Which is understandable because variables in interface are implicitly final.

What i want to ask is why doesn't it give the same error in 1 i.e why can't it see that a variable "value1" is declared in the interface in the first code snippet.
Jong Limb

Joined: May 08, 2004
Posts: 12
The problem in scenario 1 isn't one of visibility, but of syntax. It looks to the compiler that you are declaring a member variable of type value1 and you want to assign a value of 1 to it, but you didn't specify an identifier.

If you provide a type for value1, as in

then you've declared a valid member variable, but hidden the value1 from interface A.

As you've already seen, you can reference value1 in the class, but you can't modify the value. So, you can have

Beny Na
Ranch Hand

Joined: May 26, 2004
Posts: 159
hi ..

when i read from kathy and bert(java cert)
it is said that if you declare a variable in an interface(like you did in your interface declaration), it is implicitly "public static final".
e.g if you declare like:
int i=0; // (1) in an interface it is equal to :
public static final int i=0; // (2)

Therefore in your code, you are trying to change the value of the variable that is declare as final even if you don;t write "final" but it is implicitly "final"(we can't change the value of the primitive if it is declare as final).

sometimes we can;t figure it out if we got an error, but if you know the rules as explained in kathy book, it is very clear why we got an error.

Kathy and bert is a good book, just explored the book, and enjoyed it.

hope it help
subu ananthram
Ranch Hand

Joined: May 16, 2004
Posts: 102
A variable in a interface is static and final you are trying to assign a value to the variable hence the compiler complains
I agree. Here's the link:
subject: variables in interface
jQuery in Action, 3rd edition