This is the first article on packages.
Simply put, a package is a folder that organizes related top-level classes and interfaces.
A package contains source code files (containing top-level classes and interfaces) and sub-packages with source code files of their own.
Important points about packages:
- The package statement should be the first line of code in a compilation unit.
- There is only one package statement in each compilation unit.
- The package java.lang.* is imported automatically in each .java file.
- The containing package may be imported. Such an import is ignored.
//First line of code is package statement
package com.choosejava.blogspot;
//java.lang package is automatically imported
//May specify redundantly
import java.lang.*;
import somepackage.*;
//This line is ignored
import com.choosejava.blogspot.*;
//Top-level classes and interfaces
class A{...}
interface I1{...}
...
You cannot single-import a type with the same simple name as a top-level class or interface.
Also, 2 single-type import declarations should not attempt to import types with the same simple name. Following is invalid.
Also, 2 single-type import declarations should not attempt to import types with the same simple name. Following is invalid.
package somepackage;
import otherpackage.TestClass;
class TestClass{...}
...
//Reference to TestClass will be ambiguous
Following is also invalid:
import otherpackage.Vector;
import java.util.Vector;
//Reference to Vector class will be ambiguous
Following is also invalid:
import otherpackage.Vector;
import java.util.Vector;
//Reference to Vector class will be ambiguous
AVOID AMBIGUOUS CALLS. PERIOD.
Duplicate import declarations are allowed.
Let's modify the above code with TestClass a little bit.
Following is valid:
package somepackage;
import otherpackage.*;
class TestClass{...}
...
//Refer to otherpackage.TestClass using the fully qualified name