3

Can someone explain me the import statements in Java. Some import has * suffixed to it and some doesn't. What is the difference between these two? Does the use of * in the import statement imports all the classes?

see here import

Here they have said that though the import statements seems nested they are not so. Can someone explain in detail?

6
  • 3
    I voted to close, too localized. This question is answered in each and every Java tutorial/book... Commented Feb 15, 2013 at 15:07
  • @adarshr Not at all : OP doesn't ask why or whether it's bad. Commented Feb 15, 2013 at 15:12
  • 1
    @dystroy Even so, by reading all the answers to that question, the OP can get a clear understanding of import statements. Don't just judge by the title :) Commented Feb 15, 2013 at 15:14
  • @adarshr For me home's reason to close is much more accurate. You can't even do a tutorial without encountering this. Commented Feb 15, 2013 at 15:15
  • 1
    And this isn't a place to discuss, clarify and learn, right? Commented Feb 15, 2013 at 15:19

4 Answers 4

11

The use of * is considered a bad practice. It is used to import all files within that package. The more correct way of doing this is listing off each of the classes that you need, specifically in a scenario where you are doing a code review outside of an IDE and need to know which version of the class you are using. Essentially it breeds laziness in the development team.

Comment

For those arguing that this is not a "bad" practice as I have stated. How can you possibly say that this is a good practice?

import java.util.*;  
import java.io.*;

Even if the compiler ignores everything under the * except the List that you have imported, how does this possibly help someone looking at the code in the future? I think a good deal of people here forget that you are writing code for humans and not the computer. Further how could you possibly convert this code when Java goes away and you are using SuperAwesomeLanguage? Given the following example please convert this to your new language when you have ZERO knowledge of java:

public class Foo  
{
    private List list;
}

Is List in io? is io even required? The issue is you don't know. So by being explicit you can guide future developers as to what classes are required.

Sign up to request clarification or add additional context in comments.

16 Comments

The use of * is considered a bad practice - do you have a source for this?
The compiler will ignore classes not used. I don't think it's considered "bad practice".
Finish your code then ctrl-shift-o :)
@dystroy - I think you hit the nail on the head - its an opinion. Myself, I prefer listing out all packages explicitly, if only to reduce the (slight) chance of simple name conflicts. But thats just a practice of mine and not a prescribed best practice that you will find documented anywhere.
@Woot4Moo Saying something is not "bad practice" is not the same as saying it is "good practice". I concede that it can be problematic if conflicts are found. But import static org.junit.Assert.*; saves me a lot of time coding...
|
1

Does the use of * in the import statement imports all the classes

Yes.

From Oracle's Documentation :

A type-import-on-demand declaration allows all accessible types of a named package or type to be imported as needed.

Comments

1

From your link:

import java.util.*;

The * is a "regular expression operator" that will match any combination of characters. Therefore, this import statement will import everything in java.util. If you have tried entering and running the example program above, you can change the import statement to this one.

So yes * suffix imports all classes in this path

Comments

1
import com.example.*

Imports all classes in the com.example package

import com.example.ClassName

Imports just the ClassName class

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.