File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Beginning Java and the fly likes Naming Confliction Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Naming Confliction" Watch "Naming Confliction" New topic
Author

Naming Confliction

Rajat Sarkar
Greenhorn

Joined: Sep 07, 2008
Posts: 18
import static java.lang.System.out; /* imports static 'out' variable */
import static java.lang.Math.*; /* imports all the static methods of 'Math' class */

public class ImportStatic
{
public static void main(String[] args)
{
out.println("sqrt "+sqrt(2.0));
out.println("tan "+tan(60));
}
}


while we import 'static' members, is there any possibility of naming confliction?
If there any,then how the compiler resolves it?
Steve Luke
Bartender

Joined: Jan 28, 2003
Posts: 4181
    
  21

Naming conflicts can happen with static imports. They occur in two basic scenarios:

1) When staticly importing 'all' statics from multiple classes

2) When staticly importing a method with the same name from multiple classes.


The compiler does not resolve the issue (which is why there is a conflict) so you have to. The solutions are as follows:
1) If the conflict came about because of using a wildcard to import static content from multiple classes, add a new static import line for the conflicted name you want to use.
Example:


2) Specify at the point of the call which implementation of the conflicted member you want to use (especially useful if you want to use one implementation in 1 line, and the other implementation in another line:


My feeling, though, is that if you have to worry about naming conflicts when using static imports you are probably over-using static imports. They are something I would suggest using sparingly, as they will probably cause headaches later on (now where did this value come from? Where is that method declared? etc...)


Steve
 
Consider Paul's rocket mass heater.
 
subject: Naming Confliction